注册 登录
编程论坛 VB6论坛

关于int 和fix的计算结果问题

linandceline 发布于 2015-06-25 17:03, 757 次点击
有以下代码
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

求助
3 回复
#2
风吹过b2015-06-25 17:21
舍入误差造成的。

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

就会发现结果是对的。
#3
linandceline2015-06-25 17:31
我没改动变量类型,把这分成了两步运算,结果又对了
k = f / g  
k = Int(k)

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

[ 本帖最后由 linandceline 于 2015-6-25 17:38 编辑 ]
#4
风吹过b2015-06-25 18:01
这个问题在于 浮点数不能完全保存精确数造成的。

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