This question already has answers here:
Should I use multiplication or division?
                                
                                    (25个答案)
                                
                        
                                3年前关闭。
            
                    
我想知道在简单的计算中,乘法和除法之间是否存在一些差异(针对性能问题),例如:

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应用程序,您不会看到差异,但是会导致计算上的细微差异。

09-30 16:04