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

标签 java jogl

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/

相关文章:

java - javascript 中的多部分表单数据与使用 FileUpload 的 java 服务器

java - map 信息 + Java : A way to decrypt coordinates in a DAT file?

java - JOGL - 在大型数组缓冲区上调用 glMapBuffer 后性能低下

java - 如何在 JOGL 中解析或加载 .obj 文件?

performance - 从 JOGL 获取性能统计数据

java - 迭代 GridLayout 子级以隐藏 3x3 板的 ImageView

java - 在 jFreechart 中设置项目形状大小

java - Hibernate 查找表/类型的注释?

OpenGL 着色器编译问题 - 意外的 EOF

java - 为什么多边形可以显示但点却不能显示