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)which inturns 调用 which inturn 调用Float.toString()the new FloatingDecimal(f).toJavaFormatString();this 是封装这些东西的地方

于 2012-06-09T19:19:33.487 回答