Question

Comment pourrais-je aller à faire des calculs avec un très grand nombre en Java?

Je l'ai essayé mais long plafonne à 9223372036854775807, et lorsque vous utilisez un entier donc il ne et enregistre pas assez de chiffres ne sont pas assez précis pour ce que je dois.

Y at-il de toute façon de contourner cela?

Était-ce utile?

La solution

Vous pouvez utiliser la classe pour les entiers et BigInteger pour les nombres avec BigDecimal chiffres décimaux. Les deux classes sont définies dans package java.math.

Exemple:

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

Autres conseils

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

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

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;
    }
}

Commander et BigDecimal BigInteger.

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));
    }
}

En fonction de ce que vous faites, vous voudrez peut-être jeter un oeil à GMP (gmplib.org) qui est une bibliothèque multi-précision de haute performance. Pour l'utiliser en Java dont vous avez besoin wrappers JNI autour de la bibliothèque binaire.

Voir une partie du code Shootout Alioth pour un exemple de l'utiliser au lieu de BigInteger pour calculer Pi à un nombre arbitraire de chiffres.

https: //benchmarksgame-team.pages .debian.net / benchmarksgame / programme / pidigits-java-2.html

à l'aide de chaîne que vous datatype facilement résoudre ce problème.

class Account{
      String acc_no;
      String name;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top