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 成功解决