2010-10-21 6 views

risposta

12

È (quasi) illimitato. È possibile memorizzare circa 2 miliardi di cifre dopo il punto decimale se la scala è impostata sul valore massimo di un numero intero, sebbene si possa esaurire la memoria se si tenta di farlo. Se è necessario memorizzare così tante cifre che il limite è un problema, probabilmente è necessario ripensare il design del programma.

Vedere il BigDecimal documentation:

Immutabile, precisione arbitraria firmato numeri decimali. Un BigDecimal è costituito da un valore non graduato di intero arbitrario di precisione e una scala di numeri interi a 32 bit. Se zero o positivo, la scala è il numero di cifre a destra del punto decimale. Se negativo, il valore non graduato del numero viene moltiplicato per dieci alla potenza della negazione della scala. Il valore del numero rappresentato da BigDecimal è quindi (unscaledValue × 10 -scale).

2

Secondo quanto riportato nella BigDecimal Java 2 Platform Standard Ed. 5.0:

Immutabile, precisione arbitraria firmato numeri decimali. Un BigDecimal è costituito da di un valore intero non bilanciato non scalato e da una scala di numeri interi a 32 bit . Se zero o positivo, la scala è il numero di cifre a destra del punto decimale. Se negativo, il valore non scalato del numero è moltiplicato per dieci alla potenza della negazione della bilancia. Il valore di è quindi il numero rappresentato da BigDecimal (unscaledValue × 10^(- scala)).

Secondo Java's implementation of 32-bit integers:

int: il tipo di dati int è un 32 bit firmato intero complemento a due. Il valore ha un valore minimo di -2,147,483,648 e un valore massimo di 2.147.483.647 (incluso). Per i valori interi, questo tipo di dati è generalmente la scelta predefinita a meno che non vi sia un motivo (come sopra) per scegliere qualcos'altro. Questo tipo di dati sarà probabilmente abbastanza grande per i numeri che verrà utilizzato dal programma , ma se è necessario un intervallo di valori più ampio, utilizzare invece lo lungo.

Ciò significa che per i numeri di scala zero o positivi sono presenti 2.147.483.647 cifre a destra del separatore decimale. Per i numeri di scala negativi, il valore non scalato è spostato a destra del punto decimale di 2.147.483.648 cifre.