java - 在简单的浮点运算中,乘法和除法有什么区别吗?

标签 java performance division multiplication

我想知道在简单的计算中,乘法和除法之间是否存在一点差异(对于性能问题),如下所示:

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 应用程序,您不会看到差异,但它可能会导致计算中出现细微的差异。

关于java - 在简单的浮点运算中,乘法和除法有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074244/

相关文章:

java - 将复合java对象转换为CSV

ruby-on-rails - Heroku 上的简单 Rails 应用程序性能

c++ - 将浮点除法分解为整数和小数部分

java - 使用 findelements 时如何从 xpath 获取文本

java - 完美平方 if,else

mysql - Grails/Hibernate 数据库在负载 : Unable to connect (even when pooling) 下崩溃

c - 2 个数字相除并将结果保存在数组中

c++ - 将2个long值相除会在c++中产生错误的输出

java - 如何在Java中正确使用ulimit?

performance - Ado.net 性能 :What does SNIReadSync do?