表示double或float,
1。 -inf < inf == true
2。 inf + inf == inf
3。 -inf - inf == -inf
4。 positive / 0.0 == inf
5。 negative / 0.0 == -inf
6。 any real number < inf == true
7。 -inf < any real number == true
这句话是真的吗?
我们不知道(inf < inf)
,但我们可以肯定它不会引发任何例外。
答案 0 :(得分:5)
当您的问题中的所有表达式1-7在由实现IEEE 754规则的编译器编译时评估为true
。它们都不依赖于舍入模式。对于许多人来说,这只是因为<
和==
是精确的操作。此外,-inf - inf
始终为-inf
(即,在所有舍入模式下),positive / 0.0
始终为+inf
,negative / 0.0
始终为-inf
}。
在下面的6.和7.中,通常将您所指的值称为“有限”而不是“真实”。
任何实数&lt; inf == true
- 醇>
-inf&lt;任何实数== true
inf < inf
总是评估为false。这与您问题中的所有属性1-7一样,应该被视为惯例问题。决定让inf
等于它自己,因此它并不比它本身严格。所有这些选择旨在使IEEE 754算法在实践中尽可能有用。换句话说,目的是尽可能多地实现算法,而不必明确检查这些特殊值,并且计算在发生时继续有意义(适用时)。当特殊值没有意义时,当然总是有可能测试它们。