打开 Scala 解释器。
scala> 1E-200 * 1E-200
res1: Double = 0.0
scala> 1E200 * 1E200
res2: Double = Infinity
非常大的乘积值计算为无穷大。 非常小的值计算为零。
为什么不对称并创建一个叫做 Infinitesimal 的东西?
最佳答案
基本上这与 float 的工作方式有关,这与您的处理器有关,而不是与 Scala 有关。小数将非常小,以至于最接近的表示对应于 +0(正零),因此它下溢到 0.0。大数字将溢出任何有效表示并被替换为 +inf(正无穷大)。请记住, float 是固定精度的估计。如果你想要一个更精确的系统,你可以使用 http://www.scala-lang.org/api/2.11.8/#scala.math.BigDecimal
关于Scala 有无限但没有无穷小。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38177567/