Java中双重问题的字符串

时间:2016-01-26 06:33:21

标签: java

从长度大于7的String解析double时遇到一个奇怪的问题。

例如: String包含值:

String str = '123456789'

当我运行以下代码时:

double d = Double.parseDouble(str);
System.out.println(d);

输出结果为:

1.23456789E8

存储在数据库中的值是:

123456789.0000000000000000

列的数据类型是十进制(40,16)

并且没有生成异常。 请让我知道如何处理它。

5 个答案:

答案 0 :(得分:3)

1.23456789E81.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()