Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个简单的浮点运算中,乘法和除法之间有什么区别吗?_Java_Performance_Division_Multiplication - Fatal编程技术网

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

Java 在一个简单的浮点运算中,乘法和除法之间有什么区别吗?,java,performance,division,multiplication,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 / 1

我想知道在一个简单的计算中,乘法和除法是否会有一点不同(对于性能问题),如:

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

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

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

0.010000001
0.01
注意:使用
double
的错误要小得多,但如果不使用舍入,它不会消失


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

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

在第一种情况下,您将得到分数部分的浮点结果,在第二种情况下,它将被int转换为float

54*0.1f==5.4f
54/10==5


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

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

在第一种情况下,您将得到分数部分的浮点结果,在第二种情况下,它将被int转换为float

54*0.1f==5.4f
54/10==5


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

是的,存在差异。但是,如果你不想让无数人要求你进行过早的优化,那么你需要提供更多的上下文。有一点,但我想知道的是,尤其是在3D游戏计算中,在JavaYes中有一个区别。但是,如果你不想让无数人要求你进行过早的优化,那么你需要提供更多的上下文。有一点,但我想特别是在3D游戏计算中,在Java中,OP似乎在询问性能,所以我认为你也需要谈谈这一点。(请注意,在许多情况下,如果性能差异足够大,则可以进行一点额外的舍入…不过在这种情况下,OP显然需要同时测量这两种情况并做出决定。)哦,我明白了,忘了这一点,谢谢!因此,在这种例子中,除法不可能比乘法更能“降低性能”?@Damoy乘法可能更快,但你需要做很多事情才能真正起作用,即在它产生可测量的差异之前数万次,在你能够看到它之前数亿次。@PeterLawrey Ok,谢谢你的回答!OP似乎在问性能问题,所以我确实认为你也需要谈谈这方面的问题。(请注意,在许多情况下,如果性能差异足够大,则可以进行一点额外的舍入…不过在这种情况下,OP显然需要同时测量这两种情况并做出决定。)哦,我明白了,忘了这一点,谢谢!因此,在这种例子中,除法不可能比乘法更能“降低性能”?@Damoy乘法可能更快,但你需要做很多事情才能真正起作用,即在它产生可测量的差异之前数万次,在你能够看到它之前数亿次。@PeterLawrey Ok,谢谢你的回答!由于该问题询问的是关于
Mouse.getDY()/10f
,因此关于整数除法的注释(不再)适用
54*0.1f
可能并不完全等于
5.4f
,但我还没有确定。乘法和除法之间的性能差异不太重要。原来的问题是
Mouse.getDY()/10
。由于问题是关于
Mouse.getDY()/10f
,关于整数除法的注释(不再)适用
54*0.1f
可能并不完全等于
5.4f
,但我还没有确定。乘法和除法之间的性能差异不太重要。原来的问题是
Mouse.getDY()/10