当我执行以下代码时:
这段代码正确地输出了
请问我做错了什么?有更好的方法来处理这个问题并保留精度吗?我不想在这里处理BigDecimal,而只想处理小数。
有什么建议吗?
public class Test {
public static void main(String args[]){
DecimalFormat format = new DecimalFormat();
Double value = new Double(-1350825904190559999913623552.00);
StringBuffer buffer = new StringBuffer();
FieldPosition position = new FieldPosition(0);
format.format(new BigDecimal(value), buffer, position);
System.out.println(buffer);
}
}
这段代码正确地输出了
-1,350,825,904,190,559,999,913,623,552
。
由于我的代码需要处理大量的double,因此我不想将其转换为BigDecimal。我认为BigDecimal的处理时间很长。
所以我使用format.format(value, buffer, position)
。
但是我发现精度丢失了。
输出结果为-1,350,825,904,190,560,000,000,000,000
。请问我做错了什么?有更好的方法来处理这个问题并保留精度吗?我不想在这里处理BigDecimal,而只想处理小数。
有什么建议吗?
Double value = new Double(0.1)
,你想看到完整的精度(即0.1000000000000000055511151231257827021181583404541015625
)吗? - user2357112