我有两个整数 x
和 y
。我需要计算 x/y
并得到一个浮点数结果。例如,对于 3/2
的计算结果,我希望得到 1.5。我认为最简单(或者唯一)的方法是将 x
和 y
转换为浮点类型。不幸的是,我找不到一个简单的方法来实现这个转换。请问能否帮助我解决这个问题呢?
我有两个整数 x
和 y
。我需要计算 x/y
并得到一个浮点数结果。例如,对于 3/2
的计算结果,我希望得到 1.5。我认为最简单(或者唯一)的方法是将 x
和 y
转换为浮点类型。不幸的是,我找不到一个简单的方法来实现这个转换。请问能否帮助我解决这个问题呢?
你只需要将至少一个操作数转换为浮点数:
float z = (float) x / y;
或者float z = x / (float) y;
或(不需要的)
float z = (float) x / (float) y;
// 我想要转换的整数
int myInt = 100;
// 将整数转换为浮点数
float newFloat = (float) myInt
除非必须使用,否则不应使用float。在99%的情况下,double是更好的选择。
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%的情况下,使用双精度浮点数代替单精度浮点数的成本是可忽略的,然而由于舍入误差导致的微妙错误的成本要高得多。因此,许多开发人员建议不使用浮点数,强烈推荐使用BigDecimal。
然而,我发现在大多数情况下,只要使用合理的舍入,双精度浮点数就可以使用。
在这种情况下,int x具有32位精度,而float具有24位精度,即使除以1也可能存在舍入误差。另一方面,双精度浮点数具有53位精度,这已经足够得到一个相当准确的结果。
double
比float
更好。 - Matt Ball在进行进一步的计算之前,您只需要将第一个值转换为浮点数:
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
)来实现这个。 - Matt Ball萨米尔:
float l = new Float(x/y)
这样做是行不通的,因为它首先会计算x和y的整数除法,然后再从中构造一个浮点数。
float result = (float) x / (float) y;
在语义上是最佳选择。
BigDecimal
来替代float
。因为BigDecimal
并不是float
的普遍正确替代品。 - Matt Ball