Si prega di inserire questo.Tipi di Scala, Lungo, Int, ecc
scala> 86400000 * 150
res0: Int = 75098112
scala> val i : Long = 86400000 * 150
i: Long = 75098112
val i = 86400000 * 150.asInstanceOf[Long]
i: Long = 12960000000
val i = 86400000 * 150L
i: Long = 12960000000
Che cosa nel mondo sta succedendo qui? Sono stato paracadutismo e devo dire che questa è la cosa più pericolosa che abbia mai visto. Nessun controllo del compilatore per questo? Ovviamente se stavo sostituendo 150 per una variabile che è diversa.
* EDIT *
Questo è stato il codice vero e proprio che mi preoccupa.
val oneDay = 86400000
val days150 = oneDay * 150
days150 = 75098112
Questa non era colpa di Scala o di nessuno tranne la mia. Mi ha solo fatto preoccupare.
Si prega di non votare questa domanda verso il basso. È una domanda legittima e l'overflow dei numeri interi è molto pericoloso e causa reali problemi con i programmi reali. Il fatto che sia comune a molte lingue e non solo a Scala, non lo rende ingiustificato. –
Quando hai bisogno di numeri davvero grandi, c'è sempre [BigInteger] (http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html). È un po 'goffo, ma funziona. –
Votato per chiudere; questo è più di una lamentela che di una domanda. I vari esempi illustrano che l'interrogante sa già esattamente cosa sta succedendo: overflow intero. –