Java-Bigdecimal

概念: BigDecimal是一种数据结构,适用于精度较高的数据存储和计算,一般企业大型数据常用BigDecimal来进行存储和处理。
它是一种Java封装好的对象型数据结构
在理解时可以把它和String数据类型对比,他们许多操作都已被封装好
用创建好的bigdecimal对象调用封装方法进行加减乘除对比等基础操作
//        初始化定义
//        构造函数
//        int
        BigDecimal inta = new BigDecimal(1);
//        double
        BigDecimal doubleb = new BigDecimal(2.0);
//        String
        BigDecimal Stringc = new BigDecimal("3.0");
//        long
        BigDecimal longd = new BigDecimal(Long.valueOf(4));
        //转换
        BigDecimal assignment = BigDecimal.valueOf(6);
//        基础数学运算(加减乘除对比)
//        加
        System.out.println(assignment.add(inta));
//        减
        System.out.println(assignment.subtract(Stringc));
//        乘
        System.out.println(assignment.multiply(longd));
//        除
        System.out.println(assignment.divide(longd));
//        对比
        System.out.println("等于:"+assignment.compareTo(BigDecimal.valueOf(6)));
        System.out.println("大于:"+assignment.compareTo(longd));

//_________________________________________________________________________________


7
3.0
24
1.5
等于:0
大于:1




【Precauciones】

  • Como estructura de datos de objeto, Bigdecimal primero debe realizar una operación nula cuando se usa para evitar un problema de puntero nulo
  • Al realizar la división, es necesario determinar el problema de precisión y tomar los últimos decimales; de lo contrario, habrá un problema de resto inalámbrico y el error se informa de la siguiente manera
java.lang.ArithmeticException:Non-terminating decimal expansion;no exact representable decimal result

 La solución específica es la siguiente

BigDecimal divide(BigDecimal divisor,int scale,MathContext mc);

 Cuando realice operaciones de división, use la función anterior, es decir, pase una escala de parámetros de precisión y luego pase en un modo de redondeo. Generalmente, el modo de redondeo ROUND_HALF_UP se usa comúnmente.

【Colección de métodos comunes】

a.compareTo(b)//比较大小,ab均不能为null,否则会报空指针
BigDecimal b = a.setScale(0, ROUND_HALF_UP);//保留0位小数,四舍五入
a.toString() //转换成字符串
a.doubleValue() //转换成双精度数
a.floatValue() //转换成单精度数
a.longValue() //转换成长整数
a.intValue() //转换成整数
a.abs()  //返回a的绝对值,精度不变。

 En el desarrollo real, a menudo hay problemas de precisión y redondeo. Los métodos de suma, resta, multiplicación y división anteriores tienen una versión reescrita, simplemente agregue el valor int al parámetro, el enlace del método específico es el siguiente

 https://mp.csdn.net/console/editor/html/105996363

 

Supongo que te gusta

Origin blog.csdn.net/qq_36766417/article/details/105988765
Recomendado
Clasificación