C++ C++;浮点舍入(错误?)

C++ C++;浮点舍入(错误?),c++,floating-point,floating-accuracy,floating-point-precision,floating-point-conversion,C++,Floating Point,Floating Accuracy,Floating Point Precision,Floating Point Conversion,为什么我用乘法 float a= 1.0500000f; float b= a*100.0f; 为什么b是104.99999而不是105.0 当我 int f= (int)b; f是104浮点数不是无限精确的——读起来很有趣 关于第二个问题:(int)b截断逗号后出现的任何内容。这意味着,在您的情况下,104.99999变为104。因此,当您创建一个舍入错误,然后将其转换为整数时,您确实面临着获得较低数字的风险。有关您需要了解的所有信息,请参阅。至于senond部分,这是由于截断。在这个网站

为什么我用乘法

float a= 1.0500000f;
float b= a*100.0f;
为什么b是104.99999而不是105.0

当我

int f= (int)b;

f是104

浮点数不是无限精确的——读起来很有趣


关于第二个问题:
(int)b
截断逗号后出现的任何内容。这意味着,在您的情况下,
104.99999
变为
104
。因此,当您创建一个舍入错误,然后将其转换为整数时,您确实面临着获得较低数字的风险。

有关您需要了解的所有信息,请参阅。至于senond部分,这是由于截断。在这个网站上有很多关于这个“问题”的问题。第二部分读得有点错误,强制转换到
int
并没有向下取整,它只是截断了值。。。。其结果是数字向下舍入。但是,是的,我已经更新了我的帖子。如果是负面的,就不会向下舍入。我明白了。我又更新了我的答案。谢谢