1

指定されたシリーズを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);
4

8 に答える 8

4
for(int i = 0; i < 7; i++){
    System.out.println("JDK 1." + i);
}

これで問題が解決すると思います

于 2013-07-01T05:01:21.620 に答える
3
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);

浮動小数点演算に関連する精度の低下が目立たないため、double を使用する方が適切です。たとえば、最初の可能な修正出力は次のとおりです。

JDK1.0
JDK1.1
JDK1.2
JDK1.3000001
JDK1.4000001
JDK1.5000001
JDK1.6000001

2 番目の修正の出力:

JDK1.0
JDK1.1000000014901161
JDK1.2000000029802322
JDK1.3000000044703484
JDK1.4000000059604645
JDK1.5000000074505806
JDK1.6000000089406967

この問題を解決するには、次のように 2 番目の修正を変更します。

for(double f=1.0; f<1.7; f=f+0.1)
    System.out.printf("JDK%.1f\n", f);
于 2013-07-01T05:07:11.093 に答える
1

少なくとも2つの問題があります...

1 つ目は、Java がすべての 10 進数が であると想定していることですdouble。これは、float 割り当てを使用しようとすることを意味します。Java は、変換により精度が失われる可能性があることを警告しようとします。

a of を使用してdouble、値を a として扱いたいことをコンパイラに伝えることで、floatこれを克服できます。f

例えば...

for(float f=1.0f;f<1.7f;f+=0.1f) {
    System.out.println("JDK"+f);
}

次に直面する問題は、印刷された数字が要件を満たしていないという事実です0.40.4

この場合、NumberFormat何らかの種類の を使用して、数値を希望どおりにフォーマットする必要があります。

例えば...

NumberFormat nf = NumberFormat.getNumberInstance();
for(float f=1.0f;f<1.7f;f+=0.1f) {
    System.out.println("JDK"+nf.format(f));
}
于 2013-07-01T05:09:10.230 に答える
1

...そしてなぜそうしないのか

for(int f=0;f<7;f++)
    System.out.println("JDK1."+f);

また、次の理由でコンパイルの問題が発生していました。

float f = 1.0; // Compilation error

0.1 はデフォルトで double です。次のようにする必要があります。

float f = 1.0f;
于 2013-07-01T05:00:53.250 に答える
1

これらのコードセグメントを使用できます

for(int f=0;f<7;f=f+1)
     System.out.println("JDK 1."+f);
于 2013-07-01T05:02:42.310 に答える
0

これを試して:

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));
        }
    }

float は使用できませんが、このように double を使用できます

于 2013-07-01T05:08:05.623 に答える
0

1.7 未満になる場合は、

for(int f = 1; f < 7; f++){
  System.out.println("JDK1." + f);
}
于 2013-07-01T05:01:26.040 に答える
0
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));
        }
于 2013-07-01T05:03:13.557 に答える