从长度大于7的String解析double时遇到一个奇怪的问题。
例如: String包含值:
String str = '123456789'
当我运行以下代码时:
double d = Double.parseDouble(str);
System.out.println(d);
输出结果为:
1.23456789E8
存储在数据库中的值是:
123456789.0000000000000000
列的数据类型是十进制(40,16)
并且没有生成异常。 请让我知道如何处理它。
答案 0 :(得分:3)
1.23456789E8
为1.23456789 x 10 ^8^
,因此结果看起来应该如此。
答案 1 :(得分:2)
1.23456789E8
采用科学格式,可以读作1.23456789 * Math.pow(10,8)
要以十进制格式打印,请使用:
System.out.printf("%f", d);
答案 2 :(得分:1)
要获得不同格式的输出,请使用例如
System.out.printf("%15.7f%n", d);
答案 3 :(得分:1)
String str = "123456789";
double d = Double.parseDouble(str);
System.out.printf("%f\n", d);// print 123456789.000000
另见How to print double value without scientific notation using Java?
答案 4 :(得分:1)
试试这个,这将有助于你想要的东西。
new BigDecimal(d).toPlainString()