We Are Going To Discuss About BigDecimal, precision and scale. So lets Start this Java Article.
BigDecimal, precision and scale
- BigDecimal, precision and scale
A
BigDecimal
is defined by two values: an arbitrary precision integer and a 32-bit integer scale. The value of theBigDecimal
is defined to be.
- BigDecimal, precision and scale
A
BigDecimal
is defined by two values: an arbitrary precision integer and a 32-bit integer scale. The value of theBigDecimal
is defined to be.
Solution 1
A BigDecimal
is defined by two values: an arbitrary precision integer and a 32-bit integer scale. The value of the BigDecimal
is defined to be .
Precision:
The precision is the number of digits in the unscaled value.
For instance, for the number 123.45, the precision returned is 5.
So, precision indicates the length of the arbitrary precision integer. Here are a few examples of numbers with the same scale, but different precision:
- 12345 / 100000 = 0.12345 // scale = 5, precision = 5
- 12340 / 100000 = 0.1234 // scale = 5, precision = 4
- 1 / 100000 = 0.00001 // scale = 5, precision = 1
In the special case that the number is equal to zero (i.e. 0.000), the precision is always 1.
Scale:
If zero or positive, the scale is the number of digits to the right of the decimal point. If negative, the unscaled value of the number is multiplied by ten to the power of the negation of the scale. For example, a scale of -3 means the unscaled value is multiplied by 1000.
This means that the integer value of the ‘BigDecimal’ is multiplied by .
Here are a few examples of the same precision, with different scales:
- 12345 with scale 5 = 0.12345
- 12345 with scale 4 = 1.2345
- …
- 12345 with scale 0 = 12345
- 12345 with scale -1 = 123450 †
BigDecimal.toString:
The toString
method for a BigDecimal
behaves differently based on the scale and precision
. (Thanks to @RudyVelthuis for pointing this out.)
- If
scale == 0
, the integer is just printed out, as-is. - If
scale < 0
, E-Notation is always used (e.g. 5 scale -1 produces “5E+1”) - If
scale >= 0
andprecision - scale -1 >= -6
a plain decimal number is produced (e.g. 10000000 scale 1 produces “1000000.0”) - Otherwise, E-notation is used, e.g. 10 scale 8 produces “1.0E-7” since
precision - scale -1
equalsis less than -6.
More examples:
- 19/100 = 0.19 // integer=19, scale=2, precision=2
- 1/1000 = 0.0001 // integer=1, scale = 4, precision = 1
Original Author Austin Of This Content
Solution 2
-
Precision: Total number of significant digits
-
Scale: Number of digits to the right of the decimal point
See BigDecimal
class documentation for details.
Original Author hamena314 Of This Content
Solution 3
Quoting Javadoc:
The precision is the number of digits in the unscaled value.
and
If zero or positive, the scale is the number of digits to the right of the decimal point. If negative, the unscaled value of the number is multiplied by ten to the power of the negation of the scale. For example, a scale of -3 means the unscaled value is multiplied by 1000.
Original Author Andy Turner Of This Content
Solution 4
From your example annotation the maximum digits is 2 after the decimal point and 9 before (totally 11):
123456789,01
Original Author adranale Of This Content
Conclusion
So This is all About This Tutorial. Hope This Tutorial Helped You. Thank You.