Java 通过乘以1.0或添加1d将整数转换为双精度?
据我所知,将一个整数转换成双精度整数可以将前者乘以“1.0”。显然,也可以在其上添加“1d”(双文字)。那么,有什么区别呢 谢谢 所以,如果你的意思是“将Java 通过乘以1.0或添加1d将整数转换为双精度?,java,int,double,literals,Java,Int,Double,Literals,据我所知,将一个整数转换成双精度整数可以将前者乘以“1.0”。显然,也可以在其上添加“1d”(双文字)。那么,有什么区别呢 谢谢 所以,如果你的意思是“将d添加到数字的末尾”…那么没有区别。在Java中,默认情况下为all 所以这两个文本是一样的: 41.32 41.32d 如果要添加f而不是d,则其中一个将是浮点而不是双精度 您也可以通过这种方式将int更改为double: 113 113d 如果将int与double相乘得到double,则int与double相乘,这样就可以进行浮点运算
d
添加到数字的末尾”…那么没有区别。在Java中,默认情况下为all
所以这两个文本是一样的:
41.32
41.32d
如果要添加f
而不是d
,则其中一个将是浮点
而不是双精度
您也可以通过这种方式将int
更改为double
:
113
113d
如果将int
与double
相乘得到double
,则int
与double
相乘,这样就可以进行浮点运算
联合联络小组:
加宽基元转换(§5.1.2)用于转换以下规则指定的一个或两个操作数:
- 如果任一操作数的类型为
,则另一个操作数将转换为double
double
- 否则,如果任一操作数的类型为
,则另一个操作数将转换为float
float
- 否则,如果任一操作数的类型为
,则另一个操作数将转换为long
long
- 否则,两个操作数都将转换为类型
int
添加“d”就像对double进行显式转换,相乘也将转换为double原因 如果任一操作数的类型为double,则另一个操作数将转换为double 在进行操作之前
1.0是一个double,因此将一个int乘以1.0,会得到double类型的结果,但也会将另一个操作数转换为double请在代码中显示您的确切意思。“添加
1d
”相当含糊。10*1.0d==10.0
而10+1d=11.0
您的意思是在其中添加“d”,例如42
变成42d
?添加1d
会将其更改为43.0
。这两个操作不同<代码>x*1.0!=x+1.0。1d只是编写1.0的另一种方式