如何在 Java 中生成给定的系列
JDK1.0
JDK1.1
JDK1.2
JDK1.3
JDK1.4
JDK1.5
JDK1.6
我在 for 循环中使用了浮动变量,但它会产生错误。
for(float f=1.0;f<1.7;f=f+0.1)
System.out.println("JDK"+f);
for(int i = 0; i < 7; i++){
System.out.println("JDK 1." + i);
}
我认为这应该可以解决您的问题
for(float f=1.0; f<1.7; f=f+0.1)
System.out.println("JDK"+f);
需要改为
for(float f=1.0F; f<1.7; f=f+0.1F)
System.out.println("JDK"+f);
或者使用双
for(double f=1.0; f<1.7; f=f+0.1)
System.out.println("JDK"+f);
使用双精度数更好,因为与浮点运算相关的精度损失不太明显。例如,第一个可能的修复输出:
JDK1.0
JDK1.1
JDK1.2
JDK1.3000001
JDK1.4000001
JDK1.5000001
JDK1.6000001
第二个修复输出:
JDK1.0
JDK1.1000000014901161
JDK1.2000000029802322
JDK1.3000000044703484
JDK1.4000000059604645
JDK1.5000000074505806
JDK1.6000000089406967
您可以按如下方式修改第二个修复程序来解决此问题:
for(double f=1.0; f<1.7; f=f+0.1)
System.out.printf("JDK%.1f\n", f);
至少有两个问题...
首先是 Java 假定所有十进制数都是double
. 这意味着您尝试使用浮点赋值,Java 会尝试警告您由于转换可能会丢失精度。
您可以通过使用 adouble
来告诉编译器您希望将值视为 afloat
来解决这个问题f
例如...
for(float f=1.0f;f<1.7f;f+=0.1f) {
System.out.println("JDK"+f);
}
您将面临的下一个问题是打印出来的数字不符合您的要求,0.4
实际上并不完全符合您的要求0.4
在这种情况下,您需要使用NumberFormat
某种类型的 a 以您想要的方式格式化数字。
例如...
NumberFormat nf = NumberFormat.getNumberInstance();
for(float f=1.0f;f<1.7f;f+=0.1f) {
System.out.println("JDK"+nf.format(f));
}
... 那么为何不
for(int f=0;f<7;f++)
System.out.println("JDK1."+f);
此外,由于以下原因,您遇到了编译问题:
float f = 1.0; // Compilation error
0.1 默认是双精度,它必须是:
float f = 1.0f;
您可以使用这些代码段
for(int f=0;f<7;f=f+1)
System.out.println("JDK 1."+f);
尝试这个:
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.##");
for (double f = 1.0; f < 1.7; f = f + 0.1) {
System.out.println("JDK" + df.format(f));
}
}
您不能使用浮点数,但可以像这样使用双精度
如果它会小于 1.7 为什么不只是有
for(int f = 1; f < 7; f++){
System.out.println("JDK1." + f);
}
for(double i=1.0;i<=1.7;i=i+0.1){
BigDecimal bd = new BigDecimal(i);
System.out.println("JDK"+bd.setScale(1,1));
}