Java 通过乘以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相乘,这样就可以进行浮点运算

据我所知,将一个整数转换成双精度整数可以将前者乘以“1.0”。显然,也可以在其上添加“1d”(双文字)。那么,有什么区别呢

谢谢

所以,如果你的意思是“将
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的另一种方式