Scala和Java中的Infinity和NaN
Infinity
i == i + 1
,一个数字永远不会等于它自己加1?
Java强制要求使用IEEE 754浮点数算术运算,它可以让你用一个double或float来表示无穷大。正如我们在学校里面学到的,无穷大加1还是无穷大。
你可以用任何被计算为无穷大的浮点算术表达式来初始化i
,例如:
double i = 1.0 / 0.0;
不过,你最好是能够利用标准类库为你提供的常量:
double i = Double.POSITIVE_INFINITY;
事实上,很多情况下都不需要真正使用无限大来表示无限大,许多足够大的浮点数都可以实现这一目的,例如:
double i = 1.0e40;
同时Java和Scala提供了一些检测方法:
Double.isInfinite();
Double.isFinite();
scala> val a = 22.0
a: Double = 22.0