【发布时间】:2011-10-07 00:41:42
【问题描述】:
可能重复:
strange output in comparision of float with float literal
float f = 1.1;
double d = 1.1;
if(f == d) // returns false!
为什么会这样?
【问题讨论】:
-
谷歌“每个计算机科学家都应该知道的关于浮点运算的知识”以获得一些有趣的阅读。
-
永远不要使用
==来比较浮点值。而是使用更多类似if (abs(f - d) < 0.001)的东西。 -
@Bart:它实际上在 C++ 标记部分 => stackoverflow.com/tags/c%2b%2b/info:只需向下滚动。您将看到标签What Every Computer Scientist Should Know About Floating-Point Arithmetic
-
@aroth 坏主意:如果 f 是 0.0001 而 d 是 0.00001 怎么办?
-
@stijn - 这只是一个例子。显然,如果您使用非常小的数字(或其他任何需要非常高精度的数据),那么您可能想要使用不同的方法。比如根本不使用
double和float,而是找到一个好的任意精度算术库。
标签: c++ visual-c++