Java String 转double 精度丢失

Java String 转double 精度丢失

原本是我写了一个除法的方法然后返回值是 BigDecimal类型的数据  

原代码 

float num = (float) num1 * 100 / num2;   // num1 = 1   num2 = 1

DecimalFormat df = new DecimalFormat("0.00");

String format = df.format(num); //100.00


reture BigDecimal.valueOf(Double.parseDouble(format));//返回值为 100.0 精度丢失

经查询  

比如一个字符串 str="30.273705487000021"
用方法Double.parseDouble(str)转化为double类型后,变成了30.27370548700002,最后一位消失不见了。似乎0-4都会省略掉最后一位。

修改代码为

float num = (float) num1 * 100 / num2;   // num1 = 1   num2 = 1

DecimalFormat df = new DecimalFormat("0.00");

String format = df.format(num); //100.00


reture new BigDecimal(format);//返回值为 100.00  成功解决

 

你可能感兴趣的:(java基础)