Java Can';I don’我不明白一个方程的答案是如何加上一个long和一个float,然后乘以一个double

Java Can';I don’我不明白一个方程的答案是如何加上一个long和一个float,然后乘以一个double,java,double,long-integer,addition,Java,Double,Long Integer,Addition,我有一个方程j+f*d,其中j=4long和f=5.0F float和d=6.0double,答案是34.0double 我理解34.0是如何成为一个double 我不明白这个方程怎么会变成34.0,是不是5.0F!=5使用它进行乘法时 J = 4 (long) f = 5.0F (float) d = 6.0 (double) 操作顺序优先。乘法发生在加法之前 j + f * d 4 + 5.0 * 6.0 4 + 30.0 34.0 此链接详细说明了Java运算符的优先级。这是一个很好的

我有一个方程
j+f*d
,其中
j=4long
f=5.0F float
d=6.0double
,答案是
34.0double

我理解34.0是如何成为一个
double

我不明白这个方程怎么会变成34.0,是不是
5.0F!=5使用它进行乘法时

J = 4 (long)
f = 5.0F (float)
d = 6.0 (double)

操作顺序优先。乘法发生在加法之前

j + f * d
4 + 5.0 * 6.0
4 + 30.0
34.0

此链接详细说明了Java运算符的优先级。这是一个很好的记忆信息:

操作顺序优先。乘法发生在加法之前

j + f * d
4 + 5.0 * 6.0
4 + 30.0
34.0

此链接详细说明了Java运算符的优先级。这是一个很好的记忆信息:

除了Kon提到的操作顺序之外,
double
确实是唯一不会失去精度的类型,因为6.0已经是
double
。Java将尝试根据其中包含的值降级输出类型。它只使用与输入类型兼容的最小类型。因为您已经有了一个
double
(“最大”的基本数据类型,即具有最大的数字范围),所以Java输出了这个数据类型

因此,在某种意义上,你是正确的,
5.0f
5
不一样(实际上,不只是在乘法中)
5
为整数类型<代码>5.0f是浮动类型。Java不会自动将结果降级为不能容纳那么多不同数字的数据类型


(不要接受这个答案。Kon的信息更重要。)

除了Kon提到的操作顺序之外,
double
实际上是唯一不会失去精度的类型,因为6.0已经是
double
。Java将尝试根据其中包含的值降级输出类型。它只使用与输入类型兼容的最小类型。因为您已经有了一个
double
(“最大”的基本数据类型,即具有最大的数字范围),所以Java输出了这个数据类型

因此,在某种意义上,你是正确的,
5.0f
5
不一样(实际上,不只是在乘法中)
5
为整数类型<代码>5.0f是浮动类型。Java不会自动将结果降级为不能容纳那么多不同数字的数据类型

(不要接受这个答案。孔的信息更重要。)