提问人:mrgloom 提问时间:4/10/2014 更新时间:4/10/2014 访问量:1686
C++ 浮点数舍入(错误?[复制]
C++ float rounding (error?) [duplicate]
问:
为什么当我使用乘法时
float a= 1.0500000f;
float b= a*100.0f;
为什么 B 是 104.99999 而不是 105.0 ?
当我
int f= (int)b;
f 为 104
答:
1赞
Lee White
4/10/2014
#1
浮点数不是无限精确的——关于浮点数的维基百科页面读起来非常有趣。
关于第二个问题:截断逗号后面发生的任何内容。这意味着,在您的情况下,变为 .因此,当您创建一个舍入错误,然后将其转换为整数时,您确实冒着获得较小数字的风险。(int)b
104.99999
104
评论
2赞
Some programmer dude
4/10/2014
第二部分有点错误,强制转换为不会向下舍入,它只是截断了值。int
0赞
Lee White
4/10/2014
...其结果是数字向下舍入。但是,是的,我已经更新了我的帖子。
0赞
rici
4/10/2014
如果为负数,则不会向下舍入。
下一个:向下舍入浮点数
评论