Как я могу хранить номер один триллион в Java?
Я пытаюсь сохранить номер триллион в переменной. Однако затмение продолжает изнашиваться, что оно выходит за пределы диапазона, даже если тип переменной - long.
Вот мой код:
long temp = 1;
if(...){
temp = 1000000000000;
}
Если у кого-то есть понимание того, почему это происходит, я был бы очень признателен.
3 ответа
Пытаться
temp = 1000000000000L;
Java в 1000000000000 распознается как int, добавьте L в конец, чтобы сделать его длинным
int
в Java это 32-битный со знаком, поэтому наибольшее значение int составляет 2 147 483 647. Использование long для представления большего числа, такого как 1 триллион, является хорошим вариантом.
long temp = 1000000000000L;
Чтобы узнать больше о примитивных типах данных Java и их ограничениях, я настоятельно рекомендую обратиться к этой статье Oracle о примитивных типах данных.
Java имеет тип BigInteger в математической библиотеке.
http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html
Пример:
import java.math.BigInteger;
public class BigIntegerExample
{
public static void main(String[] args)
{
BigInteger bigInteger1 = new BigInteger ("123456789");
BigInteger bigInteger2 = new BigInteger ("112334");
BigInteger bigIntResult =
bigInteger1.multiply(bigInteger2);
System.out.println("Result is ==> " + bigIntResult);
}
}