当前位置: 代码迷 >> Java Web开发 >> 关于BigDecimal步骤,大的double数相减
  详细解决方案

关于BigDecimal步骤,大的double数相减

热度:5249   发布时间:2016-04-11 00:06:59.0
关于BigDecimal方法,大的double数相减
double a = 25555555555555555559.0;
double b = 25555555555555555552.0;
System.out.println(   a-b);//输出0.0

BigDecimal d3 = new BigDecimal(Double.toString(a));
System.out.println( Double.toString(a));//输出2.5555555555555557E19   (1)
BigDecimal d4 = new BigDecimal(Double.toString(b));
System.out.println( Double.toString(b));//输出2.5555555555555557E19
System.out.println(  d3.subtract(d4).doubleValue());//输出0.0

怎么才能把double 类型25555555555555555559.0,转换成String而不失真?
在(1)处就丢失数据了。。。

这样怎么进行高精度的double计算?在线等。。。

------解决方案--------------------
你为什么要把 double 数变成 string 再相减?直接调用 BigDecimal 类里面的方法不行吗
------解决方案--------------------
这样就OK了!
BigDecimal d5 = new BigDecimal("25555555555555555559.0");
BigDecimal d6 = new BigDecimal("25555555555555555552.0");
System.out.println(d5.subtract(d6));

楼主的代码前两行:
double a = 25555555555555555559.0;
double b = 25555555555555555552.0;
System.out.println(a);
System.out.println(b);

用double去接收这两个数字,可以发现,打印出来的是一样的,说明这里就已经存不准了,所以下面的就都不准确了。用BingDecimal需要注意要用它的接收字符串参数的构造函数。。。
  相关解决方案