java的整数除法返回双精度吗?到底是怎么回事?

时间:2019-07-02 00:34:12

标签: java

查看屏幕截图:

enter image description here

那里发生了什么?我看到我们正在将23F强制转换为一个int,因此在选择“ II”时,我们最终完成23/7,这应该会给我们3 ...至少如此,我认为。但是为什么我们有3.0?我们为什么要加倍?

2 个答案:

答案 0 :(得分:2)

这里是上下文:

float x = myFunc(23F);

int myFunc(float x) { ... }

表达式的右侧是int,您已经正确推断出它的值是3

当您将int值分配给float变量时,整数将转换为float

这是原始加宽转换的示例。当您从“较小”​​原始数字类型转换为“较大”原始数字类型时,可能会在各种情况下发生。 int类型比float类型“小”。一般来说:

  

byte <shortchar <int <long <float <double


  

我们为什么要加倍?

参见上文。但这是float而不是double

当使用println在Java中输出数字时,floatdouble看起来将相同。 println方法不会输出后缀为float的{​​{1}}。 FF后缀仅在Java 源代码中使用。

答案 1 :(得分:-3)

因为将返回结果的函数分配给z,并且z的类型为float。