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

标签 scala infinity

打开 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/

相关文章:

scala - 在 Scala 3 中,如果泛型类型参数映射到依赖类型,那么协变和逆变修饰符是如何映射的?

斯卡拉/Hadoop : Specifying Context for Reducer

python - 如何获得乘以零得到零的浮点无穷大

html - 带有 HTML 的无穷大符号

java - 在 toString() 中使用 ∞ 而不是 "infinity"

scala - 查询参数作为列表

scala - 使用 Scala/Apache Spark 对数据进行分组

scala - 如何在 Play Framework 2 中调用接受可变数量参数的模板

ios - CGFloat 返回 +Inf

R:range(data.frame)可以排除无限值吗?