请记住浮点数不能与 == 与常量进行比较,因为常量可能不存在浮点表示。0.0 也是这样吗?还是大多数(或所有)浮点引擎都有 0.0 的特殊表示
我正在寻找可行或不可行的语言、IEEE 规范或浮点引擎。
请记住浮点数不能与 == 与常量进行比较,因为常量可能不存在浮点表示。0.0 也是这样吗?还是大多数(或所有)浮点引擎都有 0.0 的特殊表示
我正在寻找可行或不可行的语言、IEEE 规范或浮点引擎。
一个更好的想法是将两个浮点值之间的差的绝对值与一个小的(epsilon)值而不是零进行比较:
private static final double EPSILON = 1.0e-6;
if (Math.abs(x-y) < EPSILON) {
// process here
}
x 或 y 的值等于 0 是特殊情况。
零保证在任何 IEEE-754 系统上都可以表示,而且我知道没有其他浮点系统不能完全表示零。这并不是说这样的系统不存在,但这将是非常不寻常的。