Java双重计算问题

时间:2017-01-14 14:00:41

标签: java

我目前正致力于基于网格系统的Trafficsimulation。由于某种原因,计算我必须添加多少个图块的代码行总是返回0.我已经尝试过没有变量但是它仍然没有工作。

double blocksToAdd = o.getVelocity()*((1000/Main.FPS)/1000);

目前,速度等于1.0f,模拟以10 FPS运行,因此blocksToAdd应为0.1,但始终返回0

2 个答案:

答案 0 :(得分:1)

很可能是由于整数除法导致了分数。

将前1000替换为1000.0,一切都会好的。 (后者是浮点双字面值,导致除法以浮点计算。)还有其他补救措施,但我觉得这个是最清楚的。

答案 1 :(得分:1)

由于Main.FPSint1000/Main.FPS也是int,等于100。然后,您继续计算100/1000。由于这是一个integer division,因此只会采用“整体”部分,而是0

使用浮点文字将导致Java使用浮点除法,这应该产生正确的结果:

double blocksToAdd = o.getVelocity() * ((1000.0 /Main.FPS ) / 1000.0);
// Here --------------------------------------^--------------------^