Пожалуйста, введите это.типы в Scala, Long, Int и т.д.
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
Что в мире происходит? Я прыгал с парашютом, и я должен сказать, что это самая опасная вещь, которую я когда-либо видел. Нет компилятора для этого? Очевидно, если бы я заменил 150 для переменной, которая отличается.
* EDIT *
Это фактический код, который получил меня беспокоит.
val oneDay = 86400000
val days150 = oneDay * 150
days150 = 75098112
Это не было ошибкой Scala или любой виной, кроме моей собственной. Меня только что волновало.
Пожалуйста, не голосуйте этот вопрос. Это законный вопрос, и целочисленное переполнение очень опасно и вызывает реальные проблемы с реальными программами. Тот факт, что он распространен на многих языках, а не только на Scala, не делает его нисходящим голосованием. –
Когда вам действительно нужны действительно большие цифры, всегда есть [BigInteger] (http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html). Это немного неуклюже, но это работает. –
Проголосовало за закрытие; это скорее напыщенная речь, чем вопрос. Различные примеры иллюстрируют, что вопросник уже точно знает, что происходит: целочисленное переполнение. –