首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2013-10-01 
关于BigDecimal方法,大的double数相减double a 25555555555555555559.0double b 2555555555555555555

关于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需要注意要用它的接收字符串参数的构造函数。。。

热点排行