我重写了其他人一段时间后写过的一些科学代码,并且在整个代码常量中总是声明为:
final double value = 2.0000000000D;
附有明显任意长度的所谓有效数字。我敢肯定以这种方式声明变量实际上什么都不做,并且将值设置为:
double value = 2.0;
会完全一样。但是,为了确定,我问过,以这种方式宣称一个常数会产生任何(有意义的)差异,或者这可能只是另一种语言的遗留物,它可能会有所作为?
编辑:回答以下答案:是的,我在询问此问题之前验证了此特定实例中的答案是否相同。也许我应该更具体。是否存在一个实例,我们希望增加额外的"重要的"数字实际上会返回不同的数字?我想如果我们得到浮点数开始出现分辨率问题的非常大或非常小的值,那么这是可能的吗?
答案 0 :(得分:3)
在你的例子中没有区别。你可以验证这个,
final double value1 = 2.0000000000D;
double value2 = 2.0;
System.out.println(value1 == value2);
哪个输出
true
使用double value2 = 2.;
答案 1 :(得分:0)
呃,遗留代码肯定存在一些误解。
spring:
mail:
host: smtp.gmail.com
port: 587
user: spoonatte@gmail.com
password: password
protocol: smtp
tls: true
auth: true
from: spoonatte@gmail.com
properties.mail.smtp:
auth: true
starttls.enable: true
ssl.trust: smtp.gmail.com
运作良好。
将小数设置为零是没有意义的,将小数设置为double可能是错误的。例如,
double value=2
很可笑:
为了精确计算,请考虑使用BigDecimal(并传递String中的初始值以确保不会丢失小数)。