| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 757 人关注过本帖
标题:关于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
帖 子:4947
专家分:30084
注 册: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
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
这个问题在于 浮点数不能完全保存精确数造成的。

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

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-25 18:01
快速回复:关于int 和fix的计算结果问题
数据加载中...
 
   



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

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