Grundlegende Verwendung von BigDecimal

1. Addition, Subtraktion, Multiplikation und Division

BigDecimal bignum1 = neues BigDecimal ( " 10 " );  
BigDecimal bignum2 = neues BigDecimal ( " 5 " );  
BigDecimal bignum3 = null ;  
  
// 加法   
bignum3 =   bignum1.add (bignum2);       
System. out .println ( " 和 是 :" + bignum3);  
  
// 减法   
bignum3 = bignum1.subtract (bignum2);  
System. out .println ( " 差 是 :" + bignum3);  
  
// Multiplikation   
bignum3 = bignum1.multiply (bignum2);   
System. Out .println ( "Das Produkt ist: " + bignum3);   
  
// Division   
bignum3 = bignum1.divide (bignum2);   
System. Out .println ( "Der Quotient ist: " + bignum3); 

// Division (gerundet) 
bignum3 = bignum1.divide (bignum2, 2 , BigDecimal.ROUND_HALF_UP);  

 

Erklären Sie die Kluft

pubilc BigDecimal Divide (BigDecimal Divisor, int scale, RoundingMode roundingMode)

Die Skala bezieht sich auf die Anzahl der Stellen nach Ihrem Dezimalpunkt. Zum Beispiel hat 123.456 eine Skala von 3.

Der Rundungsmodus lautet wie folgt:
1. Der
Rundungsmodus ROUND_UP wird von Null abgerundet.
Erhöhen Sie immer die Zahl, bevor Sie den Teil ungleich Null verwerfen (addieren Sie immer 1 zur Zahl vor dem Teil, der nicht Null ist).
Beachten Sie, dass dieser Rundungsmodus die Größe des berechneten Werts niemals verringert.

2.
Rundungsmodus mit ROUND_DOWN nahe Null.
Erhöhen Sie die Anzahl nicht, bevor Sie ein Teil verwerfen (addieren Sie niemals 1 zur Zahl vor dem verworfenen Teil, dh kürzen Sie es ab).
Beachten Sie, dass dieser Rundungsmodus den berechneten Wert niemals vergrößert.

3. ROUND_CEILING
ist ein Rundungsmodus nahe der positiven Unendlichkeit.
Wenn BigDecimal positiv ist, ist das Rundungsverhalten dasselbe wie bei ROUND_UP,
wenn es negativ ist, ist das Rundungsverhalten dasselbe wie bei ROUND_DOWN.
Beachten Sie, dass dieser Rundungsmodus den berechneten Wert niemals verringert.

4. ROUND_FLOOR befindet sich in der
Nähe des Rundungsmodus der negativen Unendlichkeit.
Wenn BigDecimal positiv ist, ist das Rundungsverhalten dasselbe wie ROUND_DOWN,
wenn es negativ ist, ist das Rundungsverhalten dasselbe wie ROUND_UP.
Beachten Sie, dass dieser Rundungsmodus den berechneten Wert niemals erhöht.

5. ROUND_HALF_UP rundet
auf die "nächste" Ziffer. Wenn der Abstand zu zwei benachbarten Ziffern gleich ist, wird er aufgerundet.
Wenn der verworfene Teil> = 0,5 ist, ist das Rundungsverhalten dasselbe wie bei ROUND_UP, andernfalls ist das Rundungsverhalten dasselbe wie bei ROUND_DOWN.
Beachten Sie, dass dies der Rundungsmodus (Rundung) ist, den die meisten von uns in der Grundschule gelernt haben.

6. ROUND_HALF_DOWN rundet
auf die "nächste" Ziffer. Wenn der Abstand zu zwei benachbarten Ziffern gleich ist, wird der Rundungsmodus aufgerundet.
Wenn der verworfene Teil> 0,5 ist, ist das Rundungsverhalten dasselbe wie bei ROUND_UP, andernfalls ist das Rundungsverhalten dasselbe wie bei ROUND_DOWN (fünf Runden).

7. ROUND_HALF_EVEN (Bankrundungsmethode) rundet
auf die "nächste" Zahl, und wenn der Abstand zu zwei benachbarten Zahlen gleich ist, rundet auf die benachbarte gerade Zahl.
Wenn die Zahl links vom verworfenen Teil ungerade ist, entspricht das Rundungsverhalten dem von ROUND_HALF_UP,
wenn es gerade ist, entspricht das Rundungsverhalten dem von ROUND_HALF_DOWN.
Beachten Sie, dass dieser Rundungsmodus beim Wiederholen einer Reihe von Berechnungen Akkumulationsfehler minimieren kann.
Dieser Rundungsmodus wird auch als "Banker-Rundungsmethode" bezeichnet und wird hauptsächlich in den USA verwendet. Abgerundet werden fünf Punkte in zwei Fällen.
Wenn das vorherige Bit eine ungerade Zahl ist, wird das Bit eingegeben, andernfalls wird es verworfen.
Das folgende Beispiel behält eine Dezimalstelle bei, also das Ergebnis dieser Rundungsmethode.
1,15> 1,2 1,25> 1,2

8. ROUND_UNNECESSARY bestätigt
, dass die angeforderte Operation genaue Ergebnisse liefert , sodass keine Rundung erforderlich ist.
Wenn dieser Rundungsmodus für Operationen angegeben wird, die genaue Ergebnisse erhalten, wird eine ArithmeticException ausgelöst.

 

Zweitens vergleichen Sie die Größe

if (A.compareTo (B) == - 1 ) { 
    System. out .println ( " A 小于 B " ); 
} 
 
if (A.compareTo (B) == 0 ) { 
    System. out .println ( " A 等于 B " ); 
} 
 
if (A.compareTo (B) == 1 ) { 
    System. out .println ( " A 大于 B " ); 
} 
 
if (A.compareTo (B)> - 1 ) { 
    System. out .println ( " A 大于 等于 B " ); 
}}
 
if (A.compareTo (B) < 1 ) { 
    System. out .println ( " A ist kleiner oder gleich B " ); 
}

 

Drittens behalten Sie die Dezimalstelle

// Die erste Methode: behalte zwei Dezimalstellen 
double db = bigDecimalTwo.setScale ( 2 , RoundingMode.HALF_UP) .doubleValue (); 
System. Out .println (db); 
 
// Die zweite Methode: behalte zwei Dezimalstellen 
DecimalFormat df = new DecimalFormat ( " # .00 " ); 
df.format (bigDecimalTwo);

(Fortsetzung folgt)

Ich denke du magst

Origin www.cnblogs.com/hunttown/p/12714951.html
Empfohlen
Rangfolge