Un BigDecimal
è definita da due valori: un numero intero precisione arbitraria e un intero a 32 bit scala. Il valore di BigDecimal
è definito come .
precisione:
Il precision è il numero di cifre del valore non scalato. Ad esempio, per il numero 123,45, la precisione è restituito 5.
Quindi, precisione indica la lunghezza del numero intero precisione arbitraria. Ecco alcuni esempi di numeri con la stessa scala, ma diversa precisione:
- 12345/100000 = 0,12345 // scala = 5, precisione = 5
- 12340/100000 = 0,1234 // scala = 5, precisione = 4
- 1/100000 = 0,00001 // scala = 5, precisione = 1
Nel caso particolare che il numero è uguale a zero (cioè 0.000), la precisione è sempre 1.
Scala:
Se zero o positivo, il scale è 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. Ad esempio, una scala da -3 significa che il valore non scalato viene moltiplicato per 1000.
Ciò significa che il valore intero della ‘BigDecimal’ viene moltiplicato per .
Ecco alcuni esempi della stessa precisione, con diverse scale:
- 12345 con scala 5 = 0,12345
- 12345 con scala 4 = 1.2345
- ...
- 12345 con scala 0 = 12345
- 12345 con scala -1 = 123450 †
BigDecimal.toString:
Procedimento toString
per un BigDecimal
si comporta diversamente basato sulla scala e precision
. (Grazie a @RudyVelthuis per la precisazione.)
- Se
scale == 0
, il numero intero viene appena stampato, così com'è.
- Se
scale < 0
, E-Notation viene sempre utilizzato (es scala -1 5 produce "5E + 1")
- Se
scale >= 0
e precision - scale -1 >= -6
viene prodotto un numero decimale unita (es 10000000 scala 1 produce "1000000,0")
- In caso contrario, viene utilizzata la notazione elettronica, ad es 10 la scala 8 produce "1.0E-7" poiché
precision - scale -1
uguale a è inferiore a -6.
Altri esempi:
- 19/100 = 0,19 // = integer 19, scala = 2, precisione = 2
- 1/1000 = 0,0001 // intero = 1, scala = 4, precisione = 1
fonte
2016-02-16 15:47:20
La domanda non ha assolutamente nulla con 'java.math.BigDecimal'. '@ javax.persistence.Column' non fa parte di Java SE. È l'argomento dell'APP. – Tiny
Precisione e scala sono termini usati spesso per java.math.BigDecimal, che è quello che usa per i calcoli, per esempio con JPA. ISTM lui o lei vuole sapere cosa significano nel contesto di BigDecimal, va bene. –