美文网首页
使用BigDecimal进行精确计算

使用BigDecimal进行精确计算

作者: 月影风煞 | 来源:发表于2018-01-11 15:03 被阅读0次

首先我们先来看如下代码示例:

public class Test_1 {
2     public static void main(String[] args) {
3         System.out.println(0.06+0.01);
4         System.out.println(1.0-0.42);
5         System.out.println(4.015*100);
6         System.out.println(303.1/1000);
7     }  
9 }

运行结果如下。
         0.06999999999999999
         0.5800000000000001
         401.49999999999994
         0.30310000000000004

因为计算机是二进制的,我们的浮点型无法精确的用二进制表示(2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999

在使用BigDecimal类来进行计算的时候,主要分为以下步骤:

          1. 用float或者double变量构建BigDecimal对象。
         2. 通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
         3. 把BigDecimal对象转换成float,double,int等类型。

创建BigDecimal对象的方法:

1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
2 BigDecimal b2 = BigDecimal.valueOf(0.48);

常用计算方法:

1 public BigDecimal add(BigDecimal value);                        //加法
2 public BigDecimal subtract(BigDecimal value);                   //减法 
3 public BigDecimal multiply(BigDecimal value);                   //乘法
4 public BigDecimal divide(BigDecimal value);                     //除法

BigDecimal对象转换成相应的基本数据类型
double d=b1.doubleValue();
float f=b1.floatValue();

除法

b1.divide(b2)       如果不能除尽则会报错
b1.divide(b2,int scale,int roundingMode)
    scale------小数点后面保留几位数
    roundingMode -----舍入模式,对保留小数的后一位的操作
    0——ROUND_UP     绝对值加1
    1——ROUND_DOWN   绝对值减1
    2——ROUND_CEILING  向上加1
    3——ROUND_FLOOR   向下减1
    4——ROUND_HALF_UP
    5——ROUND_HALF_DOWN
    6——ROUND_HALF_EVEN
    7——ROUND_UNNECESSARY
b1.divide(b2,int scale,RoundingMode  roundingMode)

相关文章

  • 使用BigDecimal进行精确计算

    首先我们先来看如下代码示例: 因为计算机是二进制的,我们的浮点型无法精确的用二进制表示(2.4的二进制表示并非就是...

  • BigDecimal使用(整理)

    应用场景 大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。比如:货币 使用 ...

  • 使用BigDecimal进行精确运算

    了解BigDecimal类 点击进入 Java.math.BigDecimal类 运行结果如下。 对于常用的加,减...

  • 使用BigDecimal进行精确运算

    首先我们先来看如下代码示例: 运行结果如下。 ​ 0.06999999999999999 ​ ...

  • 使用BigDecimal对浮点数进行精确计算

    问题 Java的简单类型不能够精确的对浮点数进行运算。比如: 控制台截图 解决方案 使用JDK提供的BigDeci...

  • BigDecimal大精度小数

    BigDecimal用于精度计算 输出结果: 在计算数值的时候,由于浮点数没有办法精确的对二进制进行计算,所以经常...

  • Java踩坑记系列之BigDecimal

    在java.math包中提供了对大数字的操作类,用于进行高精确计算,如BigInteger,BigDecimal类...

  • Kotlin BigDecimal 精确计算

    完整工具类 setScale 方法用于格式化小数点 其它计算方式说明 ROUND_UP舍入远离零的舍入模式。在丢弃...

  • 奇奇怪怪的BUG

    Double类型数据 初始化BigDecimal 使用Double作为参数构造BigDecimal对象,无法精确构...

  • Java中的常用类

    BigDecimal(掌握) float和double都不能表示精确的小数,使用BigDecimal类可以解决该问...

网友评论

      本文标题:使用BigDecimal进行精确计算

      本文链接:https://www.haomeiwen.com/subject/olnznxtx.html