我想知道在一个简单的计算中,乘法和除法之间是否有一点差异(对于性能问题(:
float thing = Mouse.getDY() * 0.1f;
float otherThing = Mouse.getDY() / 10f;
当然,当这种事情经常发生时,例如在3D游戏(LWJGL(中的摄像机位置计算中。
谢谢!
是的,你会得到不同的结果,因为 10f 可以精确表示,但 0.1f 不能。
System.out.println(0.1f * 0.1f);
System.out.println(0.1f / 10f);
指纹
0.010000001
0.01
注意:使用 double
的错误要小得多,但如果不使用舍入,误差不会消失。
对于 GUI 应用程序,您不会看到差异,但它可能会导致计算中的细微差异。
不仅会有性能差异。Mouse.getDY(( 返回 int 值,因此结果也会有所不同。
在第一种情况下,您将获得带有分数部分的浮点数结果,在第二种情况下,它将 int 转换为浮点数。
即 54 * 0.1f == 5.4f
但54 / 10 == 5
从性能方面来看,浮点乘法比除法更快,但我认为在 GUI 代码中它不会产生显着差异。