所以我有
double a= 199812280115
当我
System.out.println(a);
我得到了
1.9981228E13
double a
的这种表示并不意味着存储的值已被改变了吗?
答案 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);
要全面了解这个数字。