以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  导入的表仍然存在显示好长的一串小数的问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2696)

--  作者:cpayinyuan
--  发布时间:2009/5/6 7:09:00
--  导入的表仍然存在显示好长的一串小数的问题!
      以前我提过这个问题,现在仍然没有解决好。
      就是对于导入的表,有些数值(不是全部)在表中显示正常,但若用一个全局变量读入表中的数值,并在窗口显示时,就会出现好长一串小数(例如56会显示为56.00000000000021),按贺老师的办法先转换成整数再转换过来也不行,不知是哪儿的问题。希望贺老师认真检查一下是怎么回事,解决好这个问题。
--  作者:狐狸爸爸
--  发布时间:2009/5/6 8:07:00
--  
我看看
--  作者:狐狸爸爸
--  发布时间:2009/5/6 8:48:00
--  
数值输入框可以设置格式符号,你可以将格式符号设置为:
#0.00
这样就只显示两位小数了。
--  作者:cpayinyuan
--  发布时间:2009/5/6 8:54:00
--  
以下是引用狐狸爸爸在2009-5-6 8:48:00的发言:
数值输入框可以设置格式符号,你可以将格式符号设置为:
#0.00
这样就只显示两位小数了。

我知道这样可以,但目前的系统出现这种情况肯定有问题,是不太正确的.还是希望贺老师认真检查一下是怎么造成的!


--  作者:狐狸爸爸
--  发布时间:2009/5/6 9:10:00
--  
以下是引用cpayinyuan在2009-5-6 8:54:00的发言:

我知道这样可以,但目前的系统出现这种情况肯定有问题,是不太正确的.还是希望贺老师认真检查一下是怎么造成的!


这个很难,计算机本来就是浮点数,计算机的0.2不一定等于0.2,可能等于0.20000001.
在易表中,这个问题更加明显。


--  作者:cpayinyuan
--  发布时间:2009/5/6 9:38:00
--  
以下是引用狐狸爸爸在2009-5-6 9:10:00的发言:


这个很难,计算机本来就是浮点数,计算机的0.2不一定等于0.2,可能等于0.20000001.
在易表中,这个问题更加明显。

    这个道理我明白,但您的说法我不太认同.如果是1/3这样的数值变成近似值,这可以接受;但即使浮点数在计算机保存的是近似值,我在表中输入一个数0.2,计算机应该保存的是数值2和2所在的位数,无论怎么近似(2乘10的负1次方),即使是100位小数,也应该保存0.200000000000000……0,无论如何也不应该变成0.20000001。
   而且,其他的数据库软件中,从来没有发现过这个问题。只有在易表和狐表中才经常出现这个问题,难道其他软件中保存的不是浮点数?
   既然这样,系统的算法方面应该存在一定的问题,希望想办法解决!

[此贴子已经被作者于2009-5-6 9:38:22编辑过]

--  作者:程兴刚
--  发布时间:2009/5/6 10:12:00
--  
round
--  作者:cpayinyuan
--  发布时间:2009/5/6 10:14:00
--  
以下是引用程兴刚在2009-5-6 10:12:00的发言:
round

不是计算得来的数,是我刚刚输入一个2,一会儿再显示的时候就变成了2.0000000000001。
难道我在表中每输入一个数,都用round四舍五入一下?


--  作者:狐狸爸爸
--  发布时间:2009/5/6 10:19:00
--  
不用Double,用Decimal
--  作者:cpayinyuan
--  发布时间:2009/5/6 10:25:00
--  
以下是引用狐狸爸爸在2009-5-6 10:19:00的发言:
不用Double,用Decimal

难道用高精度小数能解决这个问题?高精度小数好像就是允许的位数长,占用空间大,为什么能解决这个问题,不理解。