通过乘以1.0或添加1d将int转换为double?

时间:2014-12-11 22:51:17

标签: java int double literals

据我所知,将整数转换为双精度可以将前者乘以" 1.0"。显然也可以添加" 1d" (双字面)到它。那么,差异是什么呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

所以,如果你的意思是“将d添加到数字的末尾”......那就没有区别了。在Java中,默认情况下为floating-point literals are double

所以这两个文字是一样的:

41.32
41.32d

如果您要添加f而不是d,则可以是float而不是double

您也可以通过这种方式将int更改为double

113
113d

如果您将intdouble相乘以获得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