我正在尝试格式化双值,因此它们只有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("#。##")进行格式化。
答案 0 :(得分:0)
double
(或其盒装对应Double
)无法存储在呈现为字符串时要使用的特定格式。这只是一个原始价值。
我怀疑您认为通过解析特定格式获得的double
值会以某种方式保留该格式。事实并非如此。
浮点类型不精确;并非所有值都可以准确存储。如果无法存储确切的值,则使用最接近的可存储值 - 就像您的某些结果一样。