例如,如果我这样做:
double decPart = 5.57 - 5;
System.out.println(decPart);
它返回0.5700000000000003,而不是0.57。我可以使用System.out.printf("%。2f",decPart)正确打印出来,但这并不能解决问题(注意:小数部分不一定是2位小数) 。例如,如果我尝试这样做:
System.out.println(1.0 - decPart);
它将返回0.4299999999999997
有人可以解释一下这种行为以及如何解决这个问题。提前谢谢。
答案 0 :(得分:4)
这是由于floating point imprecision。 Java中的浮点数(float
,double
)不能完全代表某些数字。如果您正在寻找绝对精确度,请查看BigDecimal。