Scala 有无限但没有无穷小。为什么?

Scala Has Infinity but no Infinitesimal. Why?

打开 Scala 解释器。

scala> 1E-200 * 1E-200    
res1: Double = 0.0

scala> 1E200 * 1E200    
res2: Double = Infinity

一个非常大的产品值计算为无穷大。 非常小的值计算为零。

为什么不对称并创建一个叫做 Infinitesimal 的东西?

基本上这与浮点数的工作方式有关,与 scala 相比,这与您的处理器有关。小数将非常小,以至于最接近的表示对应于 +0(正零),因此它下溢到 0.0。大数字将溢出任何有效表示并被替换为 +inf(正无穷大)。请记住,浮点数是固定精度的估计。如果你想要一个更精确的系统,你可以使用 http://www.scala-lang.org/api/2.11.8/#scala.math.BigDecimal

Scala,就像 Java 一样,遵循 IEEE specification for floating point numbers,而没有 "infinitesimals"。我不太确定无穷小是否有意义,因为它们没有作为数字的数学解释。