使用while / do while打印数字0、0.1、0.2、0.3,…,3

时间:2019-01-25 22:13:07

标签: java while-loop

我要像这样打印0到3范围内的数字:

  

0、0.1、0.2、0.3,...,3

但是当我使用此代码时:

AWS_IAM

或者这个:

    double i = 0;
    while (i <= 3) {
        System.out.printf("%.1f, ", i);
        i+= 0.1;
    }

我得到

  

0、0.1、0.2、0.3,..., 2.9

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

这是因为双精度。另一种解决方案可能是使用足够精确的数据类型,即BigDecimal

BigDecimal i = BigDecimal.ZERO;
while (i.compareTo(BigDecimal.valueOf(3)) <= 0) {
    System.out.printf("%.1f, ", i.doubleValue());
    i = i.add(BigDecimal.valueOf(0.1));
}