所以我有
double a= 199812280115
当我
System.out.println(a);
我明白了
1.9981228E13
这种表示double a
并不意味着存储的值已被更改,对吧?
控制台中打印的双精度值已根据默认的 toString() 值格式化,但值保持不变。如果您希望“按原样”打印值,则应使用 aNumberFormat
来格式化和打印。
检查您的值是否已更改的一个好方法是执行以下操作:
double a= 199812280115;
double b= 199812280000;
double c = a - b;
System.out.println(c);
如果你的替身失去了精度,你会看到自己。
是的,您看到的输出确实表明该值已被更改。
请注意,您只能看到小数点后的 8 位数字。该double
数据类型对于小数点后 15-16 位具有足够的精度。Java 中的默认格式输出将数字与其邻居区分开来所需的最少数字,因此您应该看到所有数字。
此外,指数是错误的。预期输出为1.99812280115E11
。
你可以使用
System.out.format("%12f", a);
看到这个数字的全部荣耀。