15

Scala ではDouble.isNaN非数を検出するためのhas がありますがDouble.isInf、(正または負の) 無限大を検出するための no があります。

なんで?パラメータが「実数」であるかどうか (つまり、数値があるかどうか) を確認したいと思います。それを文字列に変換して「inf」か何かをチェックすることでそれを行うことができますが、もっと良い方法があるはずですか?

C++ のように: http://en.cppreference.com/w/cpp/numeric/math/isinf

Scala 2.10 の使用

4

3 に答える 3

24

ScalaDoubleにはisInfiniteメソッドとNeg/Posバリアントがあります。

scala> val a = 22.0
a: Double = 22.0

scala> a.isInfinite
res0: Boolean = false

scala> val b = 2.0/0
b: Double = Infinity

scala> b.isInfinite
res1: Boolean = true

scala> b.isPosInfinity
res4: Boolean = true
于 2013-06-17T08:51:56.153 に答える
1

その方法は実際にあります。isInfinityの代わりに呼び出されるだけですisInf

RichDouble36 行目の scaladocs を参照してください: https://github.com/scala/scala/blob/v2.10.2/src/library/scala/runtime/RichDouble.scala#L36

于 2013-06-17T08:51:56.350 に答える