我的双重被改变了吗?

时间:2013-07-10 14:19:28

标签: java format double

所以我有

double a= 199812280115

当我

System.out.println(a);

我得到了

1.9981228E13  

double a的这种表示并不意味着存储的值已被改变了吗?

4 个答案:

答案 0 :(得分:5)

根据默认的toString()vaue,控制台中打印的double值已经格式化,但值保持不变。如果您希望“按原样”打印值,则应使用NumberFormat进行格式化和打印。

答案 1 :(得分:1)

检查您的值是否被更改的好方法是执行以下操作:

double a= 199812280115;
double b= 199812280000;
double c = a - b;
System.out.println(c);

如果你的双精度失去精确度,你会发现自己。

答案 2 :(得分:1)

是,您看到的输出确实显示该值已被更改。

请注意,您只能看到小数点后的8位数字。 double数据类型具有足够的精度,小数点后15-16位。 Java中的默认格式输出了将数字与其邻居区分开所需的最少数量的数字,因此您应该看到所有数字。

此外,指数是错误的。预期输出为1.99812280115E11

答案 3 :(得分:0)

您可以使用

System.out.format("%12f", a);

要全面了解这个数字。