Как я могу хранить номер один триллион в 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);
  }
}
Другие вопросы по тегам