Working with Money
final float result = 0.99f - 0.1f -0.1f -0.1f;
System.out.println(result);
0.68999994
final double result = 0.99 - 0.1 -0.1 -0.1;
System.out.println(result);
0.6900000000000001
Figure 544. Using
BigDecimal
final BigDecimal zero_dot_99 = new BigDecimal("0.99");
final BigDecimal zero_dot_1 = new BigDecimal("0.1");
BigDecimal
result = zero_dot_99.subtract(zero_dot_1); // Subtracting 0.1
result = result.subtract(zero_dot_1); // Subtracting 0.1
result = result.subtract(zero_dot_1); // Subtracting 0.1
System.out.println(result);
0.69
Figure 545. Chaining
BigDecimal
operations final BigDecimal zero_dot_99 = new BigDecimal("0.99");
final BigDecimal zero_dot_1 = new BigDecimal("0.1");
BigDecimal result = zero_dot_99.
subtract(zero_dot_1).
subtract(zero_dot_1).
subtract(zero_dot_1);
System.out.println(result);
0.69
No. 183
Chaining subtract method calls
Q: |
Explain the chaining mechanism implementing three successive
subtractions in Figure 545, “Chaining |
A: |
Figure 546.
BigDecimal
features -
Higher memory allocation hosting higher precision.
-
Immutable instances
-
Calculation performance penalty.
-
Clumsy interface.