Uso básico de BigDecimal

1. Suma, resta, multiplicación y división.

BigDecimal bignum1 = nuevo BigDecimal ( " 10 " );  
BigDecimal bignum2 = nuevo BigDecimal ( " 5 " );  
BigDecimal bignum3 = nulo ;  
  
// 加法   
bignum3 =   bignum1.add (bignum2);       
Sistema. out .println ( " 和 是 :" + bignum3);  
  
// 减法   
bignum3 = bignum1.subtract (bignum2);  
Sistema. out .println ( " 差 是 :" + bignum3);  
  
// Multiplicación   
bignum3 = bignum1.multiply (bignum2);   
System. Out .println ( "El producto es: " + bignum3);   
  
// Division   
bignum3 = bignum1.divide (bignum2);   
System. Out .println ( "El cociente es: " + bignum3); 

// División (redondeada) 
bignum3 = bignum1.divide (bignum2, 2 , BigDecimal.ROUND_HALF_UP);  

 

Explicar la división

pubilc BigDecimal divide (divisor BigDecimal, int scale, RoundingMode roundingMode)

escala se refiere al número de dígitos después de su punto decimal. Por ejemplo, 123.456 tiene una escala de 3.

RoundingMode es el siguiente:
1. El
modo de redondeo ROUND_UP se redondea desde cero.
Siempre aumente el número antes de descartar la parte distinta de cero (siempre agregue 1 al número anterior a la parte de descarte distinta de cero).
Tenga en cuenta que este modo de redondeo nunca reducirá el tamaño del valor calculado.

2.
Modo de redondeo con ROUND_DOWN cercano a cero.
No aumente el número antes de descartar una parte (nunca agregue 1 al número antes de la parte descartada, es decir, truncar).
Tenga en cuenta que este modo de redondeo nunca aumentará el tamaño del valor calculado.

3. ROUND_CEILING
es un modo de redondeo cercano al infinito positivo.
Si BigDecimal es positivo, el comportamiento de redondeo es el mismo que ROUND_UP;
si es negativo, el comportamiento de redondeo es el mismo que ROUND_DOWN.
Tenga en cuenta que este modo de redondeo nunca reduce el valor calculado.

4. ROUND_FLOOR está
cerca del modo de redondeo de infinito negativo.
Si BigDecimal es positivo, el comportamiento de redondeo es el mismo que ROUND_DOWN;
si es negativo, el comportamiento de redondeo es el mismo que ROUND_UP.
Tenga en cuenta que este modo de redondeo nunca aumentará el valor calculado.

5. ROUND_HALF_UP se redondea
al dígito "más cercano". Si la distancia a dos dígitos adyacentes es igual, se redondea hacia arriba.
Si la parte descartada> = 0.5, el comportamiento de redondeo es el mismo que ROUND_UP; de lo contrario, el comportamiento de redondeo es el mismo que ROUND_DOWN.
Tenga en cuenta que este es el modo de redondeo (redondeo) que la mayoría de nosotros aprendimos en la escuela primaria.

6. ROUND_HALF_DOWN se redondea
al dígito "más cercano". Si la distancia a dos dígitos adyacentes es igual, el modo de redondeo se redondea hacia arriba.
Si la parte descartada es> 0.5, el comportamiento de redondeo es el mismo que ROUND_UP; de lo contrario, el comportamiento de redondeo es el mismo que ROUND_DOWN (cinco rondas).

7. ROUND_HALF_EVEN (método de redondeo del banco) se redondea
al número "más cercano", y si la distancia a dos números adyacentes es igual, se redondea al número par adyacente.
Si el número a la izquierda de la parte descartada es impar, el comportamiento de redondeo es el mismo que ROUND_HALF_UP;
si es par, el comportamiento de redondeo es el mismo que ROUND_HALF_DOWN.
Tenga en cuenta que al repetir una serie de cálculos, este modo de redondeo puede minimizar los errores de acumulación.
Este modo de redondeo también se denomina "método de redondeo bancario" y se utiliza principalmente en los Estados Unidos. Redondeando, cinco puntos en dos casos.
Si el bit anterior es un número impar, se ingresa el bit; de lo contrario, se descarta.
El siguiente ejemplo conserva un decimal, por lo que es el resultado de este método de redondeo.
1.15> 1.2 1.25> 1.2

8. ROUND_UNNECESSARY
afirma que la operación solicitada tiene resultados precisos, por lo que no se requiere redondeo.
Si este modo de redondeo se especifica para operaciones que obtienen resultados precisos, se genera una ArithmeticException.

 

Segundo, compara el tamaño

if (A.compareTo (B) == - 1 ) { 
    Sistema. out .println ( " A 小于 B " ); 
} 
 
if (A.compareTo (B) == 0 ) { 
    Sistema. out .println ( " A 等于 B " ); 
} 
 
if (A.compareTo (B) == 1 ) { 
    Sistema. out .println ( " A 大于 B " ); 
} 
 
if (A.compareTo (B)> - 1 ) { 
    Sistema. out .println ( " A 大于 等于 B " ); 
}
 
if (A.compareTo (B) < 1 ) { 
    System. out .println ( " A es menor o igual que B " ); 
}

 

Tercero, mantén el decimal

// El primer método: mantener dos decimales 
doble db = bigDecimalTwo.setScale ( 2 , RoundingMode.HALF_UP) .doubleValue (); 
System. Out .println (db); 
 
// El segundo método: mantener dos decimales 
DecimalFormat df = nuevo DecimalFormat ( " # .00 " ); 
df.format (bigDecimalTwo);

(Continuará)

Supongo que te gusta

Origin www.cnblogs.com/hunttown/p/12714951.html
Recomendado
Clasificación