Scala не будет принимать 12-значное целое число

ok, так что я только начинаю работать в scala.. столкнулся с странной проблемой с большим числом.

import Math._
var num:Long=0
num+=600851475
num*=1000
println(num)

этот код работает нормально, но следующее не компилируется с ошибкой, говорящей, что целое число слишком велико.

import Math._
var num:Long=0
num+=600851475000
println(num)

что? может scala не обрабатывать 12-значный номер?:/

Ответ 1

Ваша константа должна быть 600851475000L

Ответ 2

Даже если num объявлен как Long, 600851475000 считывается компилятором как Int, который может обрабатывать числа только в [- 2 ^ 32, 2 ^ 32) [-2 ^ 31, 2 ^ 31). Запись числа 600851475000L сообщает компилятору относиться к нему как к длинному, который будет обрабатывать числа до 18 цифр.

Ответ 3

Без суффикса L (или L), буквальное значение рассматривается как 32-битный int.