BigDecimal浮点数计算

       最近在开发过程中碰到一个小问题,关于精确计算浮点数的。不管double类型还是float类型的数据如果直接用普通的+,-,*,/,来计算数值的话,是很容易出问题的。因为那只是适用于科学计数法,对于计算金钱来说是很忌讳的,很容易少那么一分两分的。想要精准计算浮点数,还得用java.math 提供的API类BigDecimal。

      Bigdecimal有四种构造方法,BigDecimal(int),BigDecimal(long),BigDecimal(double),BigDecimal(String)。提供四种运算方法,加法:add(BigDecimal augend),减法:sbutract(BigDecimal  subtranched),乘法:multiply(BigDecimal  multiplicand),除法:divide(BigDecimal  divisor)。

     具体使用方法【以BigDecimal(double)构造方法为例,其他构造方法类似】:BigDecimal  a1=new BigDecimal (double numble1);BigDecimal a2 =  new BigDecimal (double numble2);

        a1 + a2 : a1.add(a2); a1-a2:  a1.subtract(a2);a1*a2:  a1.muitiply(a2);a1/a2: a1.divide(a2); 结果都是BigDecimal 类型,可以根据需要将 BigDecimal类型结果换相应的类型。比如将a1+a2的结果转换为double类型:a1.add(a2).doubleValue()。通常可以配合java.text.DecimalFormat对象调用format方法来格式化你想要的结果。比如a1*a2保留两位小数:java.text.DecimalFormat d= new java.text.DecimalFormat("0.00"); d.format(a1.multiply(a2));



版权声明:本文为lokyNo1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。