0

さて、私はテストプログラムを手に入れました:

public class ParseTest {
    public static void main(String[] args){
        String s = "-0.000051";
        System.out.println(s + " != " + Float.parseFloat(s));
    }
}

両側に同じ数字を入れてはいけません。これは出力です:

-0.000051 != -5.1E-5

では、なぜ両側で同じ数値を出力しないのでしょうか?

4

1 に答える 1

2

科学的表現が異なるだけで同じ数です。

例えば:

100 = 1E2 

0.1 = 1E-1

同じ表現を取得するには?

同じ表現が必要な場合は、使用しますBigDecimal

System.out.println(s + " != " + new BigDecimal(s));

誰がこの形式に変換していますか?

たとえば、プリミティブを文字列に変換するとき

float f = 100.123;
String result = "" + f; 

これは、これFloat.valueOf(f)がカプセル化されている場所です。Float.toString()new FloatingDecimal(f).toJavaFormatString();

于 2012-06-09T19:19:33.487 に答える