如何在Java中将整数转换为float?

Rom*_*man 75 java floating-point integer

我有两个整数xy.我需要计算x/y,结果我想浮动.例如,作为3/2我希望有1.5的结果.我认为,最简单的(或唯一的)的方式来做到这一点是转换xy成float类型.不幸的是,我找不到一个简单的方法来做到这一点.你能帮帮我吗?

Mat*_*all 138

你只需要操作数为浮点的至少一个:

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)

  • @ user3002853阅读有关盒装类型与原语的内容.http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html (2认同)

tej*_*hah 11

// 我要转换的整数

int myInt = 100;
Run Code Online (Sandbox Code Playgroud)

// 将整数转换为浮点数

float newFloat = (float) myInt
Run Code Online (Sandbox Code Playgroud)

  • 至少在 Android Studio 中,编译器会抱怨尝试执行此操作的不兼容类型。 (2认同)

Pet*_*rey 5

除非必须,否则不应使用浮动.在99%的情况下,双倍是更好的选择.

int x = 1111111111;
int y = 10000;
float f = (float) x / y;
double d = (double) x / y;
System.out.println("f= "+f);
System.out.println("d= "+d);
Run Code Online (Sandbox Code Playgroud)

版画

f= 111111.12
d= 111111.1111
Run Code Online (Sandbox Code Playgroud)

关注@Matt的评论.

float具有非常小的精度(6-7位)并且相当容易地显示出明显的舍入误差.double有另外9位精度.在99%的情况下使用double而不是float的成本是名义上的,但是由于舍入误差导致的细微错误的成本要高得多.出于这个原因,许多开发人员建议不要使用浮点,强烈推荐BigDecimal.

但是我发现在大多数情况下可以使用double,只要使用合理的舍入.

在这种情况下,int x具有32位精度,而float具有24位精度,即使除以1也可能具有舍入误差.另一方面,double具有53位精度,足以获得相当准确的结果.

  • 你应该详细说明_why_`double`比`float`更好. (6认同)

use*_*own 5

在进入进一步的计算之前,您只需要将第一个值传递给float:

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