如何将整数转换为Java中的float?
我有两个整数x
和y
。 我需要计算x/y
和作为结果我想浮动。 例如,作为3/2
的结果,我想要1.5。 我认为最简单(或唯一)的方法是将x
和y
转换为浮点types。 不幸的是,我找不到一个简单的方法来做到这一点。 你能帮我一下吗?
您只需要将至less一个操作数强制转换为float:
float z = (float) x / y;
要么
float z = x / (float) y;
或(不必要的)
float z = (float) x / (float) y;
除非必须,否则不应使用浮点数。 在99%的情况下,双倍是更好的select。
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);
版画
f= 111111.12 d= 111111.1111
关注@ Matt的评论。
浮点数的精度很低(6-7位数),相当容易显示很大的舍入误差。 双精度还有9位数字。 在99%的情况下,使用double而不是float的代价是假想的,但是由于舍入误差导致的细微错误的代价要高得多。 出于这个原因,许多开发人员build议不要使用浮点,强烈build议BigDecimal。
但是我发现在大多数情况下使用double可以使用明智的四舍五入 。
在这种情况下,int x具有32位精度,而浮点数具有24位精度,即使除以1也可能具有舍入误差。 另一方面,双精度的53位精度足以获得相当准确的结果。
在进一步计算之前,您只需将第一个值传递给float:
float z = x * 1.0 / y;
这里是你如何做到这一点:
public static void main(String[] args) { // TODO Auto-generated method stub int x = 3; int y = 2; Float fX = new Float(x); float res = fX.floatValue()/y; System.out.println("res = "+res); }
再见 !
萨米尔:
float l = new Float(x/y)
将不起作用,因为它将首先计算x和y的整数除法,然后从中构build一个浮点数。
float result = (float) x / (float) y;
在语义上是最好的候选人。
//我要转换的整数
int myInt = 100;
//将整型转换为float
float newFloat = (float) myInt