我正在重写一些别人写的科学代码,在整个代码中,常量始终声明为:

final double value = 2.0000000000D;


并附有一个明显任意长度的所谓有效数字。我有95%的把握确保以这种方式声明变量实际上没有任何作用,并且将值设置为:

double value = 2.0;


会完全一样。但是,可以肯定的是,我要问的是,以这种方式声明一个常数是否有任何(有意义的)区别,还是这可能只是来自另一种语言的遗物而已呢?

编辑:针对以下回答:是的,在问这个问题之前,我已验证在这个特定实例中答案是相同的。也许我应该更具体一些。有没有这样的情况,我们期望添加其他“有效”数字实际上会返回不同的数字?我想,如果浮点数开始出现分辨率问题,我们得到的值可能太大还是太小?

最佳答案

在您的示例中,没有区别。您可以像这样验证

final double value1 = 2.0000000000D;
double value2 = 2.0;
System.out.println(value1 == value2);


哪个输出

true


使用double value2 = 2.;也合法

10-07 18:57
查看更多