好吧,我有一个测试程序:
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
那么,为什么不在双方输出相同的数字呢?
答案 0 :(得分:2)
这是different scientific representation,
的相同数字例如:
100 = 1E2
和
0.1 = 1E-1
如何获得相同的表示?
如果您想要相同的表示,请使用BigDecimal
System.out.println(s + " != " + new BigDecimal(s));
谁将其转换为此格式?
当你将原语转换为String时,例如
float f = 100.123;
String result = "" + f;
它调用Float.valueOf(f)
,其中inturns调用Float.toString()
来调用new FloatingDecimal(f).toJavaFormatString();
这就是这个东西被封装的地方