【发布时间】:2017-10-11 19:32:20
【问题描述】:
我对 Scala 如何处理除以零感到困惑。这是一个 REPL 代码 sn-p。
scala> 1/0
java.lang.ArithmeticException: / by zero
... 33 elided
scala> 1.toDouble/0.toDouble
res1: Double = Infinity
scala> 0.0/0.0
res2: Double = NaN
scala> 0/0
java.lang.ArithmeticException: / by zero
... 33 elided
scala> 1.toInt/0.toInt
java.lang.ArithmeticException: / by zero
... 33 elided
如您在上面的示例中所见,根据您除以零的方式,您会得到以下结果之一:
- “java.lang.ArithmeticException: / 零”
- “双数 = NaN”
- “双 = 无穷大”
这使得调试非常具有挑战性,尤其是在处理未知特征的数据时。这种方法背后的原因是什么,甚至是一个更好的问题,如何在 Scala 中以统一的方式处理除零?
【问题讨论】:
-
我认为这与不同的数据类型有关。在执行不同但相关的计算时,请尝试始终使用相同的数据类型。例如:Double、Int 等
-
您可能正在处理未知特征的数据,但在像 Scala 这样的静态类型语言中,您处理的不是未知类型的数据。
-
@AlexeyRomanov 我明白你的意思。但是,我想大多数人都会同意这种方法容易出现一些非常肮脏的错误,并且在您编写的每一个算术运算中都非常繁琐。
标签: java scala arithmetic-expressions divide-by-zero