标题:关于int 和fix的计算结果问题
只看楼主
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
结帖率:78.95%
已结贴  问题点数:20 回复次数:3 
关于int 和fix的计算结果问题
有以下代码
Dim k As Double
Dim f As Double
Dim g As Double

f = 5.96 - 0.05 * 2 - 10 / 1000
g = 0.32 + 0.005
k = int(f / g)  
Text7 = f
Text8 = g
Text9 = k

其中
f值为5.85,显示正确
g值为0.325,显示正确
按照正常运算,k值(取整前)应是5.85/0.325=18,取整后也是18
但是实际显示值为17,用fix也一样是17

求助
2015-06-25 17:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
舍入误差造成的。

你这样定义
Dim k As Single
Dim f As Single
Dim g As Single

就会发现结果是对的。

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-25 17:21
linandceline
Rank: 2
等 级:论坛游民
威 望:2
帖 子:88
专家分:47
注 册:2014-12-19
得分:0 
我没改动变量类型,把这分成了两步运算,结果又对了
k = f / g  
k = Int(k)

但是,换了另一个数据去算,又变不对
还是老实点改变量吧

[ 本帖最后由 linandceline 于 2015-6-25 17:38 编辑 ]
2015-06-25 17:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
这个问题在于 浮点数不能完全保存精确数造成的。

系统会对最终值进行四舍五入,但存在这种舍入误差造成结果不对的情况。

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-25 18:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-454717-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.127867 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved