java中特别在银行内使用数据时,对数据的精度要求比较高,这个时候通常使用Bigdecimal类来提高数据的精度,但是由于在代码开发过程中会遇到一些开发人员将该数据进行double或者long的转换,从来导致精度的错误,举例如下:
BigDecimal a = new BigDecimal("569.56");
double m = a.doubleValue();
System.out.println(m);
double m1 = a.doubleValue()*100;
System.out.println(m1);
这时输出的m 为569.56,m1为56955.99999999999,在银行系统中不注意的化,在文件处理中就会舍弃后面的小数尾数,从而导致少了一分钱。
因此在使用高精度数据的时候建议使用Bigdecimal类的原始的包含方法处理,具体整理如下:
add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。
toString()将BigDecimal对象的数值转换成字符串。
doubleValue()将BigDecimal对象中的值以双精度数返回。
floatValue()将BigDecimal对象中的值以单精度数返回。
longValue()将BigDecimal对象中的值以长整数返回。
intValue()将BigDecimal对象中的值以整数返回
在牵扯到位移的时候使用movePointRight或者movePointLeft的方式