没有精确表示为0.1的a
float或
double。由于此表示错误,结果与你期望的结果略有不同。
你可以使用以下两种方法:
- 使用
double
类型时,仅显示所需的位数。在检查相等性时,可以选择任一种方式都允许较小的公差。 - 或者使用一种类型,该类型允许你存储要精确表示的数字,例如
BigDecimal
可以精确表示0.1。
的示例代码BigDecimal
:
BigDecimal step = new BigDecimal("0.1");for (BigDecimal value = BigDecimal.ZERO; value.compareTo(BigDecimal.ONE) < 0; value = value.add(step)) { System.out.println(value);}


