• 3913阅读
  • 4回复

在VS2008数据变量监视时出现的怪现象 [复制链接]

上一主题 下一主题
离线沙漠之源
 

只看楼主 倒序阅读 楼主  发表于: 2011-12-04
关键词: Qt,监控变量
    在处理一个将浮点型数按规定的小数位处理时,在调试程序监控数据时发现了一个怪现象,原本变量的值为7.8862456的数据在监视变量值时变为了7.8862455999999996,如下图所示。不知如何解释,哪位大侠给解释一下为什么会成这样。


离线tlcugb

只看该作者 1楼 发表于: 2011-12-04
强制转换造成的数据精度不够
离线沙漠之源

只看该作者 2楼 发表于: 2011-12-04
回 1楼(tlcugb) 的帖子
谢谢你,看来这里面的知识还很多啊!
离线ninsun

只看该作者 3楼 发表于: 2011-12-05
这个是浮点数本身的问题...
不一定是强制转换会出这个问题, 有时候进行一次乘除运算就会这样...
像10进制小数无法在有限小数位表示1/3一样,一旦截断就会出现0.33333333比1/3小了一点,累积起来就会出现楼主遇到的问题了...
PS:想要保留小数点后2位(四舍五入)其实可以直接用QSring::number(num+0.005, 'f', 2);来实现的...
离线沙漠之源

只看该作者 4楼 发表于: 2011-12-05
回 3楼(ninsun) 的帖子
多谢ninsun大侠指教
快速回复
限100 字节
 
上一个 下一个