java - 简单的java数学函数不起作用

标签 java math

这让我发疯,而且完全没有意义。

private double currentTime, oldTime;
float dt;
float xMove = .125f; 
float yMove = .125f;
float cameraPosX = 1.0f;
float cameraPosY = 1.0f;


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

@Override
public void update() {
    currentTime = System.currentTimeMillis();
    dt = (float) (currentTime - oldTime);
    oldTime = currentTime;

    CameraMenuAnimation();
}

在上面的 println 语句中打印

System.out(21557): xMove: 0.125 cameraDT: 20.0 cameraPosX: 1.7832686E11

这会在循环中打印,并且cameraDT:按应有的方式更改每个循环的值。 CameraPosX 永远不会改变值,而且该值太高了。这怎么可能?这只是CameraMenuAnimation() 中的一个简单的乘法和加法语句。

此外,如果我对 dt 的值进行硬编码,它也可以工作。

private void CameraMenuAnimation(){
        cameraPosX += xMove * 20.0;
        cameraPosY += yMove * 20.0;
.../

这怎么可能?

最佳答案

看起来您从未初始化oldTime。这可以解释您所看到的行为,即 cameraPosX 第一次获得非常大的值,然后几乎没有变化。

关于java - 简单的java数学函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106537/

相关文章:

java - 拖动组件创建另一个

math - OCR 和字符相似度

python - 四次方程求解器的实现不起作用

php - 关于将数学方程式写入代码的建议

c - 为什么C语言中的cexp(+infinity+I*infinity)=+/-infinity+I*NaN?

javascript - 计算不在范围集之间的最小值

java - 解析数字抛出 : Exception in thread "main" java. lang.NumberFormatException: 对于输入字符串

java - Instagram 主题标签搜索查询出现 'filenotfound' 异常

java - 垃圾收集过程在 Java 中定期完成吗?

java - 使用 GridBagConstraints 的奇怪布局