也许,这是一个非常简单的问题,但我找不到答案。我已经搜索了一段时间(现在Google认为我正在发送自动查询http://twitter.com/michaelsync/status/17177278608)。

int n = 4.35 *100;
cout << n;

为什么输出变为“434”而不是“435”? 4.35 * 100 = 435这是一个整数值,应该将其分配给整数变量“n”,对吗?

或C++编译器在乘法之前将4.35转换为整数吗?我认为不会。为什么编译器会自动将4.35更改为4.34(仍是浮点数)?

谢谢。

最佳答案

What Every Computer Scientist Should Know About Floating-Point Arithmetic

遗憾的是,这实际上只是一个起点,因为语言随后会介绍它们自己进行类型转换的时间,等等。在这种情况下,您仅创建了无法精确表示常量4.35的情况,因此出现了4.35 * 100更像是434.9999999999,并且强制转换为int执行trunc,而不是round

关于c++ - C++ float 为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3127962/

10-12 23:50