1

请记住浮点数不能与 == 与常量进行比较,因为常量可能不存在浮点表示。0.0 也是这样吗?还是大多数(或所有)浮点引擎都有 0.0 的特殊表示

我正在寻找可行或不可行的语言、IEEE 规范或浮点引擎。

4

2 回答 2

2

一个更好的想法是将两个浮点值之间的差的绝对值与一个小的(epsilon)值而不是零进行比较:

private static final double EPSILON = 1.0e-6;

if (Math.abs(x-y) < EPSILON) {
   // process here
}

x 或 y 的值等于 0 是特殊情况。

于 2012-05-03T23:06:09.217 回答
2

零保证在任何 IEEE-754 系统上都可以表示,而且我知道没有其他浮点系统不能完全表示零。这并不是说这样的系统不存在,但这将是非常不寻常的。

于 2012-05-11T16:20:44.100 回答