99 votes

Un grand Nombre de Java

Comment pourrais-je aller sur le faire des calculs avec des nombres extrêmement importants en Java? j'ai essayé de long, mais qui plafonne à 9223372036854775807, et lors de l'utilisation d'un nombre entier, il n'enregistre pas assez de chiffres et, par conséquent, n'est pas assez précise de ce dont j'ai besoin. Est-il de toute façon de contourner cela?

159voto

fbinder Points 5613

Vous pouvez utiliser la classe BigInteger pour les entiers et les BigDecimal pour les nombres avec des chiffres décimaux. Les deux classes sont définies en java.paquet de maths.

Exemple:

BigInteger reallyBig = new BigInteger("1234567890123456890");
BigInteger notSoBig = new BigInteger("2743561234");
reallyBig = reallyBig.add(notSoBig);

19voto

AlbertoPL Points 8644

Utilisation de la classe BigInteger qui est une partie de la bibliothèque Java.

http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html

18voto

Peter Lawrey Points 229686

Voici un exemple qui obtient de grands nombres très rapidement.

import java.math.BigInteger;

/*
250000th fib # is: 36356117010939561826426 .... 10243516470957309231046875
Time to compute: 3.5 seconds.
1000000th fib # is: 1953282128707757731632 .... 93411568996526838242546875
Time to compute: 58.1 seconds.
*/
public class Main {
    public static void main(String... args) {
        int place = args.length > 0 ? Integer.parseInt(args[0]) : 250 * 1000;
        long start = System.nanoTime();
        BigInteger fibNumber = fib(place);
        long time = System.nanoTime() - start;

        System.out.println(place + "th fib # is: " + fibNumber);
        System.out.printf("Time to compute: %5.1f seconds.%n", time / 1.0e9);
    }

    private static BigInteger fib(int place) {
        BigInteger a = new BigInteger("0");
        BigInteger b = new BigInteger("1");
        while (place-- > 1) {
            BigInteger t = b;
            b = a.add(b);
            a = t;
        }
        return b;
    }
}

13voto

Clint Miller Points 6339

La caisse BigDecimal et BigInteger.

6voto

Rupendra Sharma Points 61
import java.math.BigInteger;
import java.util.*;
class A
{
    public static void main(String args[])
    {
        Scanner in=new Scanner(System.in);
        System.out.print("Enter The First Number= ");
        String a=in.next();
        System.out.print("Enter The Second Number= ");
        String b=in.next();

        BigInteger obj=new BigInteger(a);
        BigInteger obj1=new BigInteger(b);
        System.out.println("Sum="+obj.add(obj1));
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X