gpt4 book ai didi

Java float在修改对象位置时无法进行乘法、加法

转载 作者:行者123 更新时间:2023-12-01 17:38:05 25 4
gpt4 key购买 nike

float 在我的 Java/JOGL (OpenGL for Java) 程序中没有按预期计算。在绘制方法中,当调用每一帧(每秒 60 帧)时,我尝试修改对象的位置。所有值都是浮点值。

float timeElapsed=((float)(System.currentTimeMillis()-lastdrawn))/1000;
float moveZ=(timeElapsed*momentumZ);
System.out.println(moveZ);
this.transformation.z+=moveZ;
System.out.println(this.transformation.z);

由于 momentumZ 是用 0.2f 初始化的,而 this.transformation.z 是用 0.0f 初始化的,因此对象应该在 z 轴上移动。但我的输出是:

...
0.0024
2.58058064E8
0.0052
2.58058064E8
8.0000004E-4
2.58058064E8
0.001
2.58058064E8

因此,moveZ 具有正确的值,但相加却将其搞乱了。如果我尝试每帧添加一个常量值,例如 0.05f,则对象会移动。

这个错误可能出在哪里?关于 float 还有什么我不知道的吗?

最佳答案

请注意:

2.58058064E8

约为 2.58 亿。您正在添加

0.0024 

对此,不会改变任何事情......

如果您不熟悉 float 的这种表示形式,请查看此处的文章:

关于Java float在修改对象位置时无法进行乘法、加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com