我刚刚用 C++ 编写了以下代码:
double variable1;
double variable2;
variable1=numeric_limits<double>::max()-50;
variable2=variable1;
variable1=variable1+5;
cout<<"\nVariable1==Variable2 ? "<<(variable1==variable2);
cout 语句的答案是 1,即使变量 2 和变量 1 不相等。有人可以帮助我吗?为什么会这样?
我知道不精确浮点数学的概念,但不认为直接比较两个 double 会发生这种情况。当我将 variable1 替换为以下内容时,我也得到了相同的 resuklt:
double variable1=(numeric_limits<double>::max()-10000000000000);
比较仍然显示它们相等。我需要减去多少才能看到它们开始不同?
最佳答案
The maximum value for a double is 1.7976931348623157E+308 。由于缺乏精度,添加和删除小值(例如 50 和 5)实际上不会更改变量的值。因此它们保持不变。
关于c++ - 即使C++中的double变量不相等,它们也显示相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6941733/