在一个简单的浮点运算中,乘法和除法之间有什么区别吗?

时间:2017-02-06 17:57:49

标签: java performance division multiplication

我想知道在一个简单的计算中乘法和除法之间是否会有一点差异(性能问题),如:

float thing = Mouse.getDY() * 0.1f;
float otherThing = Mouse.getDY() / 10f;

当这种事情发生很多时,当然,例如在3D游戏中的相机位置计算(lwjgl)。

谢谢!

2 个答案:

答案 0 :(得分:0)

是的,你会得到不同的结果,因为10f可以准确表示,但0.1f不能。

System.out.println(0.1f * 0.1f);
System.out.println(0.1f / 10f);

打印

0.010000001
0.01

注意:使用double的错误要少得多,但不使用舍入就不会消失。

对于GUI应用程序,您不会看到差异,但它可能会导致计算中的细微差别。

答案 1 :(得分:0)

不仅会有性能差异。 Mouse.getDY()返回int值,因此结果也会不同。

在第一种情况下,你将得到带有小数部分的浮点数结果,在第二种情况下,它将被转换成浮点数。

即。 54 * 0.1f == 5.4f54 / 10 == 5

从性能方面看,浮点乘法比除法快,但我不认为在GUI代码中它可以产生显着的差异。