Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Numeros grandes

esse codigo funciona, mas só até o numero 20. numeros maiores que esse ou numeros muito grandes, dão errado. tem alguma forma de resolver o problema?


long contador = 1;
        long contador2 = 0;
        long fatorial = 0;
        long contador3 = 0;
        for (fatorial = 9; fatorial > 0;) {

            contador = contador * fatorial;
            contador2++;

            fatorial = fatorial - 1;
        }
        System.out.print("O fatorial de " + contador2 + "! é : " );
        for (contador3 = contador2; contador3 > 0;) {
            System.out.print(contador3);
            if (contador3 > 1) {
                System.out.print( " x ");
            }
            if (contador3 == 1) {System.out.print(" = ");}

            contador3 = contador3 - 1;

        }
        System.out.print(contador);

    }
3 respostas

Oi Marcos

Você chegou no valor máximo de um long:

tamanho: 8 bytes; valor máximo: 9.223.372.036.854.775.807

Como o fatorial de 20 dá 2.432.902.008.176.640.000 é esse o maior fatorial possivel, pois o fatorial de 21 já dá 51.090.942.171.709.440.000 (que é maior do que o long suporta).

Tem alguma variável que suporta mais bytes que o long?

solução!

Não, Long é o maior.

Data TypeSizeDescription
byte1 byteStores whole numbers from -128 to 127
short2 bytesStores whole numbers from -32,768 to 32,767
int4 bytesStores whole numbers from -2,147,483,648 to 2,147,483,647
long8 bytesStores whole numbers from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
float4 bytesStores fractional numbers. Sufficient for storing 6 to 7 decimal digits
double8 bytesStores fractional numbers. Sufficient for storing 15 decimal digits
boolean1 bitStores true or false values
char2 bytesStores a single character/letter or ASCII values