2013-06-17 3 views

risposta

19

di Scala Double ha un metodo isInfinite, e Neg/Pos varianti:

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 
+0

Grazie. Non so come mi sia mancato. – akauppi

+1

@akauppi Forse perché REPL non lo completa automaticamente. Vedo che Eclipse lo offrirà. –

+0

@ som-snytt oh, buon punto. IDEA li mostra. (Penso che anche il plugin Netbeans) – gourlaysama

4

Cosa è già stato detto, oltre a questo: la ragione per la parte isNaN è che il confronto con NaN è speciale:

scala> val bar = Double.NaN 
bar: Double = NaN 

scala> bar == Double.NaN 
res0: Boolean = false 

non si applicano tali norme per infinito, quindi non c'è bisogno di una speciale funzione di controllo (eccetto per la comodità di gestire il segno):

scala> val foo: Double = Double.PositiveInfinity 
foo: Double = Infinity 

scala> foo == Double.PositiveInfinity 
res1: Boolean = true 
+0

Grazie. Quello che trovo leggermente confuso è che Double.PositiveInfinity usa la formulazione (troppo lunga), mentre Double.isPosInfinity ne usa una più corta. – akauppi