Скала не будет принимать 12-значное целое - PullRequest
11 голосов
/ 05 сентября 2010

хорошо, так что я только начинаю в 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-значное число? : /

Ответы [ 3 ]

26 голосов
/ 05 сентября 2010

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

14 голосов
/ 05 сентября 2010

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

9 голосов
/ 05 сентября 2010

Без суффикса L (или l) значение литерала рассматривается как 32-битное целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...