我要像这样打印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
我做错了什么?
答案 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));
}