如何在java中从整数中获取浮点值

AKZ*_*Zap 5 java

可能重复:
如何在Java中将整数转换为float?

我遇到了这个代码的问题.我有两个变量int ifloat f.

int i = 23;

float f = i/10;

f

2.3

我想f变量中的值应该是2.0

但真正的产值2.3int i

为什么结果会像这样发生,如何获得浮点值 float f

Bri*_*new 12

float f = i/10

使用整数运算(分子和分母都是整数).然后将结果提升为float类型.

如果你这样做

float f = i/10f
Run Code Online (Sandbox Code Playgroud)

然后你将强制浮点运算(分母现在是非整数).连续f表示10f被视为浮点.指定10.010d表示加倍.


Rah*_*hul 5

输出为2.0f,因为分子和分母都是整数,因此它使用整数运算.

i/10返回2float,将其转换为2.0f.

你需要对至少一个数字/分母进行类型转换float才能进行FP分割

int i = 23;

float f = (float)i/10; 
Run Code Online (Sandbox Code Playgroud)

要么

float f = i/10f; 
Run Code Online (Sandbox Code Playgroud)

可能的方法.

float z = (float) x / y;
Run Code Online (Sandbox Code Playgroud)

要么

float z = x / (float) y;
Run Code Online (Sandbox Code Playgroud)

或(不是必需的)

float z = (float) x / (float) y;
Run Code Online (Sandbox Code Playgroud)