Using double 2.0 - 1.1 = 0.8999999999999999
Using BigDecimal 2.0 - 1.1 = 0.9
                                
BigInteger intVal
int scale
long intCompact
INFLATED = Long.MIN_VALUE
C
                                
precision
precision
precision
                                
2.0 = 20 × 10-1
unscaledValue: 20 
scale: 1 
precision: 2
                                
Big decimal: 123.456789
Value: 123456789
Scale: 6
Precision: 9
                                
                                
                                
Equal references ? false
Initial value 0
Result value 0.015
                                
scale
scale
                                
Big decimal A: 2.00 unscaled value: 200 scale: 2 precision: 3
Big decimal B: 2.0 unscaled value: 20 scale: 1 precision: 2
Are A and B equal ? false
Big decimal A: 2 unscaled value: 2 scale: 0 precision: 1
Big decimal B: 2 unscaled value: 2 scale: 0 precision: 1
Are A and B equal ? true
Equal references? false
                                
HashSet size: 4
HashSet contents: [2.00, 2.000, 2, 2.0]
                                
                                
Big decimal A: 2.00 unscaled value: 200 scale: 2 precision: 3
Big decimal B: 2.0 unscaled value: 20 scale: 1 precision: 2
Are A and B equal ? true
                                
TreeSet size: 1
TreeSet contents: [2]
                                
TreeSet size: 11
TreeSet contents: [-3.0, -2.00, -1.0, 0.000, 2, 3.0, 4.00, 5.000, 6.00, 7.0, 8.00]
                                
double val 
                                
0.5
0.25
0.125
0.0625
0.03125
0.1000000000000000055511151231257827021181583404541015625
0.01000000000000000020816681711721685132943093776702880859375
0.001000000000000000020816681711721685132943093776702880859375
0.000100000000000000004792173602385929598312941379845142364501953125
0.000010000000000000000818030539140313095458623138256371021270751953125
                                
0.5
0.25
0.125
0.0625
0.03125
0.1
0.01
0.001
0.0001
0.00001
                                
                                
                                
i = 10, j = 10, i==j is false
k = 10, l = 10, k==l is true
m = 11, n = 11, m==n is false
                                
i = 0E-15, j = 0E-15, i==j is false
k = 0E-15, l = 0E-15, k==l is true
m = 0E-16, n = 0E-16, m==n is false
                                
C
                                
0.002 + 0.001 = 0.003
0.002 - 0.001 = 0.001
0.002 * 0.001 = 0.000002
0.002 / 0.001 = 2
100 + 0.01 = 100.01
100 - 0.01 = 99.99
100 * 0.01 = 1.00
100 / 0.01 = 1.00E+4
                                
1 / 32 = 0.03125
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at bigdecimal.PreciseDivisionDemo.main(PreciseDivisionDemo.java:19)
                                
2.10000
2.1000
2.100
2.10
2.1
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divideAndRound(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at bigdecimal.ScaleDemo.main(ScaleDemo.java:17)
                                
int precision
RoundingMode roundingMode
C
                                
public class BigDecimal extends Number implements Comparable C
  public final static int ROUND_UP =      0;
  public final static int ROUND_DOWN =     1;
  public final static int ROUND_CEILING =   2;
  public final static int ROUND_FLOOR =    3;
  public final static int ROUND_HALF_UP =   4;
  public final static int ROUND_HALF_DOWN =  5;
  public final static int ROUND_HALF_EVEN =  6;
  public final static int ROUND_UNNECESSARY = 7;
  public BigDecimal divide(BigDecimal divisor, int roundingMode)
}
                                
C
                                
2.00000 / 3.0 = 0.7
2.00000 / 3.0 = 0.67
2.00000 / 3.0 = 0.667
2.00000 / 3.0 = 0.6667
2.00000 / 3.0 = 0.66667
2.00000 / 3.0 = 0.666667
2.00000 / 3.0 = 0.6666667
2.00000 / 3.0 = 0.66666667
2.00000 / 3.0 = 0.666666667
                                
C
                                
2.00000 / 3.0 = 0.7
2.00000 / 3.0 = 0.67
2.00000 / 3.0 = 0.667
2.00000 / 3.0 = 0.6667
2.00000 / 3.0 = 0.66667
2.00000 / 3.0 = 0.666667
2.00000 / 3.0 = 0.6666667
2.00000 / 3.0 = 0.66666667
2.00000 / 3.0 = 0.666666667
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divideAndRound(BigDecimal.java:1439)
at java.math.BigDecimal.divide(BigDecimal.java:1385)
at bigdecimal.OldDivideDemo.main(OldDivideDemo.java:21)
                                
2.333333
2.3333
2.333
2.33
2.3
2
                                
                                
                                
BigDecimal value is: 123.456789
Converted BigInteger value is: 123
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divideAndRound(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at java.math.BigDecimal.toBigIntegerExact(Unknown Source)
at bigdecimal.ConversionDemo.main(ConversionDemo.java:16)
                                
                                
BigDecimal value is: 1.234567890123456789
Converted double value is: 1.2345678901234567
Converted float value is: 1.2345679
                                
BigDecimal value is: 1234567890123456789.0123456789
Converted long value is: 1234567890123456789
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divideAndRound(Unknown Source)
at java.math.BigDecimal.setScale(Unknown Source)
at java.math.BigDecimal.longValueExact(Unknown Source)
at bigdecimal.ToIntDemo.main(ToIntDemo.java:16)
                                
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть