如果我有这样的事情:执行代码只有一个变量的总和等于1
double a = 1.0f;
double b = 1.0f;
double c = 1.0f;
double d = 1.0f;
a /= 3.0f; // 0.3333...
b /= 3.0f;
c /= 3.0f;
if ((a+b+c) == 1)
puts("sum equals 1");
if (3*a == 1)
puts("product equals 1");
if (d == 1)
puts("d equals 1");
不出所料,只有第三一个执行。如果一些自变量的总和等于1,是否有简单的方法来执行代码?编辑:我真的知道为什么(1/3.0)+(1/3.0)+(1/3.0)不是1.但我不知道另一种方式来问它。
请参阅http://stackoverflow.com/questions/4858531/double-equals-0-problem-in-c – 2013-02-16 07:41:19
[每个程序员需要知道什么关于浮点](http:// floating-point-gui。德/)。 (1/3.0)+(1/3.0)+(1/3.0)**在任何有限表示二进制浮点系统中都不会**等于1.0。你可以做的最好的事情是询问它们是否在一个微小的阈值内大致等于1。 – nneonneo 2013-02-16 07:41:48
我知道它为什么不起作用。问题是我怎么能这样做,所以总和工作 – Cn00b 2013-02-16 07:44:04