首页 > 其他 > 详细

关于 float的四舍五入问题

时间:2020-02-27 10:17:31      阅读:114      评论:0      收藏:0      [点我收藏+]

3.55 can‘t be represented exactly in floating point. The internal value is something like 3.54999999999, which rounds to 3.5 

首先要明白浮点数在计算机中都绝大多数是近似值。其实C++对浮点数是自动四舍五入的,而且是非常严格地下一位为5则入,小于5则不入。这在double型时一般是没有问题的。在float型时,因精度低,内存中的近似值可能刚好使决定四舍五入的那一位的5不足额,造成不能四舍五入。例如float x=3.1415;,实际上内存中的二进制换算过来是3.14149999999999...;,这样取3位小数后就成了3.141而不是3.142了;如果换成double型,立马就变成3.142了。可以这样解决就保险了:float型的有效位是6位左右,给要输出的变量加一个1E-6,四舍五入的问题就解决了。

关于 float的四舍五入问题

原文:https://www.cnblogs.com/hulian425/p/12370204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!