据我所知,将整数转换为双精度可以将前者乘以" 1.0"。显然也可以添加" 1d" (双字面)到它。那么,差异是什么呢?
谢谢!
答案 0 :(得分:2)
所以,如果你的意思是“将d
添加到数字的末尾”......那就没有区别了。在Java中,默认情况下为floating-point literals are double
。
所以这两个文字是一样的:
41.32
41.32d
如果您要添加f
而不是d
,则可以是float
而不是double
。
您也可以通过这种方式将int
更改为double
:
113
113d
如果您将int
与double
相乘以获得double
,那么将int
is being promoted增加到double
所以可以进行浮点运算。
来自JLS:
应用扩展基元转换(第5.1.2节)来转换以下规则指定的一个或两个操作数:
如果任一操作数的类型为
double
,则另一个操作数将转换为double
。否则,如果任一操作数的类型为
float
,则另一个操作数将转换为float
。否则,如果任一操作数的类型为
long
,则另一个操作数将转换为long
。否则,两个操作数都将转换为
int
类型。
答案 1 :(得分:1)
添加' d'就像是对双精度的显式强制转换,乘法也会转换为双重原因
如果任一操作数的类型为double,则另一个操作数转换为double 在手术开始之前。
和1.0是一个double,所以将int乘以 1.0 ,会得到double类型的结果,但也会将另一个操作数转换为double