String.format(%。2f,double)仅适用于一半的测试

时间:2018-05-23 18:41:31

标签: java parsing formatting double

我正在尝试格式化双值,因此它们只有2个小数位:

remainingAmount = Double.parseDouble(String.format("%.2f",remainingAmount - calculatePrincipalPayment()));

如您所见,此代码使用remainingAmount - calculatePrincipalPayment()格式化双值String.format(),然后将其从String传输到Double并将其分配给double变量remainingAmount(已声明)。 remainingAmount为double,calculatePrincipalPayment()返回double。

问题是它只格式化部分值,例如它可以返回401.37(这是所需的格式)以及403.71999999999997。 我也尝试使用DecimalFormat df = new DecimalFormat("#。##")进行格式化。

1 个答案:

答案 0 :(得分:0)

double(或其盒装对应Double)无法存储在呈现为字符串时要使用的特定格式。这只是一个原始价值。

我怀疑您认为通过解析特定格式获得的double值会以某种方式保留该格式。事实并非如此。

浮点类型不精确;并非所有值都可以准确存储。如果无法存储确切的值,则使用最接近的可存储值 - 就像您的某些结果一样。