El ejemplo de este artículo describe el uso simple de la clase BigDecimal en Java. Es una habilidad muy práctica en programación Java que se comparte con todos para su referencia. El análisis de uso específico es el siguiente:
En términos generales, cuando se trata de cálculos comerciales en Java, todos sabemos que float y double no se pueden usar porque no pueden realizar cálculos precisos. Sin embargo, los diseñadores de Java proporcionan a los programadores una clase BigDecimal muy útil, que puede mejorar las deficiencias de las clases flotantes y dobles que no pueden realizar cálculos precisos. La clase BigDecimal se encuentra en el paquete de clases java.maths. Primero veamos cómo construir un objeto BigDecimal. Tiene muchos constructores. Aquí están los dos más utilizados para demostrar: uno es BigDecimal (doble val) y el otro es BigDecimal (String str). No parece haber mucha diferencia entre los dos, pero como dice la descripción de la API:
/*Los resultados de este constructor pueden ser algo impredecibles. Se podría suponer que new BigDecimal(.1) es exactamente igual a .1, pero en realidad es igual a .1000000000000000055511151231257827021181583404541015625. doble (o, para eso importa, como una fracción binaria de cualquier longitud finita). Por lo tanto, el valor largo que se pasa al constructor no es exactamente igual a .1, a pesar de las apariencias. El constructor (Cadena), por otro lado, es perfectamente predecible. : new BigDecimal(".1") es exactamente igual a .1, como era de esperar. Por lo tanto, generalmente se recomienda utilizar el constructor (String) con preferencia a este.*/Es decir, un constructor que utiliza doble como parámetro no puede construir con precisión un objeto BigDecimal. Debe especificar un entorno de contexto, es decir, especificar el bit preciso. El constructor que utiliza un objeto String como parámetro puede construir con precisión un objeto BigDecimal. Por favor mire el código a continuación:
importar java.math.*;public class TestBigDecimal { public static void main(String args[]){ BigDecimal bd = new BigDecimal("10.123"); nuevo BigDecimal(10.123); "/n"+ bd1); }}Salida después de ejecutar:
10.123
10.12299999999999993320898283855058252811431884765625
Por tanto, cuando elegimos un constructor, depende de las necesidades concretas.
Además, muchas personas preguntarán cómo convertir tipos básicos, como objetos int, float, double, long y BigDecimal entre sí. Muy simple:
Los tipos básicos se convierten en objetos BigDecimal correspondientes mediante constructores, y la clase BigDecimal proporciona métodos como intValue(), floatValue(), doubleValue() y longValue() para convertir objetos BigDecimal en valores correspondientes.
Con respecto a cómo se calcula BigDecimal, tomé la pregunta de una persona en el foro como ejemplo para escribir brevemente el método de cálculo de BigDecimal. El tema es: Li Bai caminaba por la calle sin incidentes, llevando una olla para comprar vino. Cuando te encuentras con una tienda, duplicas la cantidad, cuando ves flores, bebes un dou. Cuando te encuentras con flores y una tienda, te bebes todo el vino en la olla. ¿Cuántos dou de vino hay en la olla de Li Bai? ?
Esta pregunta debe avanzarse de atrás hacia adelante, revertirse el cálculo y finalmente poder obtener el volumen del vino original.
import java.math.*;public class Libai { public static void main(String args[]){ BigDecimal volumn = new BigDecimal("0"); for (int i=0; i<5; i++){ volumn = volumn .add(new BigDecimal("1")); volumen = volumen.divide(new BigDecimal("2")); System.out.print(volumen }}Resultados de ejecución:
0.96875
Espero que lo que describe este artículo sea útil para que todos aprendan sobre programación Java.