Zielony Smok - logo witryny

BigInteger (3) – metody rzutujące

byte byteValueExact()

Metoda zapisuje BigInteger jako byte. Jeśli zakres BigInteger przekracza zakres byte – metoda wyrzuca wyjątek ArithmeticException.

double doubleValue()

Metoda zapisuje BigInteger jako double. Jeżeli BigInteger nie mieści się w double nie jest wyrzucany wyjątek, a w otrzymanym double znajduje się przypadkowy zapis rejestrów pamięci.

float floatValue()

Metoda zapisuje BigInteger jako float. Jeżeli BigInteger nie mieści się we float nie jest wyrzucany wyjątek, a w otrzymanym float znajduje się przypadkowy zapis rejestrów pamięci.

int intValue()

Metoda zapisuje BigInteger jako int. Jeżeli BigInteger nie mieści się w int nie jest wyrzucany wyjątek, a w otrzymanym int znajduje się przypadkowy zapis rejestrów pamięci.

int intValueExact()

Metoda zapisuje BigInteger jako int. Jeśli zakres BigIntegerr przekracza zakres int – metoda wyrzuca wyjątek ArithmeticException.

long longValue()>

Metoda zapisuje BigInteger jako long. Jeżeli BigInteger nie mieści się w long nie jest wyrzucany wyjątek, a w otrzymanym long znajduje się przypadkowy zapis rejestrów pamięci.

long longValueExact()

Metoda zapisuje BigInteger jako long. Jeśli zakres BigInteger przekracza zakres long – metoda wyrzuca wyjątek ArithmeticException.

short shortValueExact()

Metoda zapisuje BigInteger jako short. Jeśli zakres BigInteger przekracza zakres short – metoda wyrzuca wyjątek ArithmeticException.

Przykład

Wszystkich metod używa się podobnie.

Klasa BigInt10
package java_math_biginteger;

import java.math.*;

public class BigInt10 {
    public static void main(String[] args) {
      BigInteger big1 = new BigInteger("12345678912");
      Util.print(big1);
      int big2 = big1.intValue();
      Util.print(big2);
      int big3 = big1.intValueExact();
      Util.print(big3);

    }
}
Wynik

Po uruchomieniu na konsoli otrzymujemy:

12345678912
-539222976
Exception in thread "main" java.lang.ArithmeticException: BigInteger out of int range
	at java.base/java.math.BigInteger.intValueExact(BigInteger.java:4787)
	at klasyrozne/java_math_biginteger.BigInt10.main(BigInt10.java:11)

Druga linia pokazuje śmietnik (przypadkowe wartości) pobrane z pamięci.

Trzecia linia pokazuje wyrzucony wyjątek, ostrzegający, że zakres liczby big1 nie mieści się w zakresie typu int.