• BigDecimal加减乘除


    import java.math.BigDecimal;
    
    public class Testmath {
         public static void main(String[] args) { 
                 String str1="2.30";
                BigDecimal bd=new BigDecimal(str1);
                System.out.println("字符串转BigDecimal:"+bd);
                
                BigDecimal num1 = new BigDecimal("100.68889");  
                BigDecimal num2 = new BigDecimal("2.5");  
                
                //加法
                BigDecimal result1 = num1.add(num2);
                System.out.println("和    是   :  " + result1);
                
                //减法 
                BigDecimal result2 = num1.subtract(num2);
                System.out.println("差    是   :  " + result2);
                
                //乘法
                BigDecimal result3 = num1.multiply(num2);
                System.out.println("积    是   :  " + result3);
                
                //除法
                BigDecimal result4 = num1.divide(num2);
                System.out.println("商    是   :  "+result4);
        
         }
    }

    结果:

    ===============================================

    注意:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法

    JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。

      BigDecimal result4 = num1.divide(num2,2,BigDecimal.ROUND_HALF_UP);

    注意这个divide方法有两个重载的方法,一个是传两个参数的,一个是传三个参数的:

    两个参数的方法:

    @param divisor value by which this {@code BigDecimal} is to be divided. 传入除数

    @param roundingMode rounding mode to apply. 传入round的模式

    三个参数的方法:

    @param divisor value by which this {@code BigDecimal} is to be divided. 传入除数
    @param scale scale of the {@code BigDecimal} quotient to be returned. 传入精度
    @param roundingMode rounding mode to apply. 传入round的模式

    ※ 注意:

    1)System.out.println()中的数字默认是double类型的,double类型小数计算不精准。

    2)使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的!

    因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。这一点在BigDecimal类的构造方法注释中有说明。
    相关链接 : https://blog.csdn.net/haiyinshushe/article/details/82721234

    ===========

    相关链接:https://www.cnblogs.com/LeoBoy/p/5897754.html

  • 相关阅读:
    感想篇:4)越来越精简的机械设计
    标准结构篇:5)热(散热)设计
    标准结构篇:4)EMC电磁兼容
    标准结构篇:2)O型橡胶密封圈
    进阶篇:1)制造发展阶段与对设计的要求
    标准结构篇:1)选用标准化的结构
    高阶篇:8.2)注塑模具讨论要点(讨模评审)
    基础篇:2.1)设计的深度-最小特征
    高阶篇:8.3)塑胶件试模
    高阶篇:8)注射模具开模流程总章
  • 原文地址:https://www.cnblogs.com/Steven5007/p/10238953.html
Copyright © 2020-2023  润新知