关于BigDecimal

来源:互联网 发布:全站仪数据采集 编辑:程序博客网 时间:2024/05/17 08:53

关于BigDecimal

BigDecimal有两部分组成,an arbitrary precision integer unscaled value和a 32-bit integer scale

其中关于scale就是小数点后面数字的位数,例如1.1234567,则scale=7,unscaled value为有效数字位数,这里unscaled value=11234567,有如下代码:

        String a="-0.1234567890";        BigDecimal bigDecimal=new BigDecimal(a);        System.out.println(bigDecimal.scale());        System.out.println(bigDecimal.unscaledValue());

其输出结果为:

10
-1234567890

因此BigDecimal可以表示为unscaledValue × 10-scale

我们在构造BigDecimal对象时,应尽量使用字符串构建,请看如下代码:

        BigDecimal floatValue=new BigDecimal(0.1);        BigDecimal stringValue=new BigDecimal("0.1");        System.out.println(floatValue.toString());        System.out.println(stringValue.toString());

其结果如下:

0.1000000000000000055511151231257827021181583404541015625
0.1

因为我们使用float构造BigDecimal对象时,实际上我们并不能用float构造一个精确的值,而采用字符串时就可以避免这个问题。

0 0
原创粉丝点击