gpt4 book ai didi

Java Double 和 Float 数学表现异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:18 25 4
gpt4 key购买 nike

我得到了一个非常奇怪的输出,而这个输出本来应该是一个非常简单的计算。我正在尝试根据增量平滑地移动相机。如果你看下面的CameraMenuAnimation(),xMove和cameraDT相乘并添加到cameraPosX。 cameraPosX 然后吐出 1.7832639E11。这没有意义?? CameraPosY 做同样的事情。

private double currentCameraTime, oldCameraTime, cameraFrameTime, cameraDT;
float cameraPosX = 1.0f;
float cameraPosY = 1.0f;
xMove = .125f;
yMove = .125f;

private void CameraMenuAnimation(){
cameraPosX += (xMove * cameraDT);
cameraPosY += (yMove * cameraDT);
GameCamera.setCameraPos(cameraPosX, cameraPosY);
System.out.println("xMove: " + xMove + " cameraDT: " + cameraDT + " cameraPosX: "+ cameraPosX);
}


@Override
public void update() {

//some accumulator variables up here that I removed
while (accumulator >= step) {
currentCameraTime = System.currentTimeMillis();
cameraFrameTime = currentCameraTime - oldCameraTime;
cameraDT = cameraFrameTime;
CameraMenuAnimation();
oldCameraTime = currentCameraTime;
accumulator -= step;
}

它从上面的 println 语句中打印出来。这根本没有任何意义。

System.out(8714): xMove: 0.125 cameraDT: 31.0 cameraPosX: 1.7832639E11

最佳答案

很难说,因为你没有给出完整的例子,但看起来oldCameraTime没有初始化,所以第一个cameraDT可能非常大。

关于Java Double 和 Float 数学表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105241/

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