我目前正致力于基于网格系统的Trafficsimulation。由于某种原因,计算我必须添加多少个图块的代码行总是返回0.我已经尝试过没有变量但是它仍然没有工作。
double blocksToAdd = o.getVelocity()*((1000/Main.FPS)/1000);
目前,速度等于1.0f,模拟以10 FPS运行,因此blocksToAdd
应为0.1
,但始终返回0
。
答案 0 :(得分:1)
很可能是由于整数除法导致了分数。
将前1000替换为1000.0,一切都会好的。 (后者是浮点双字面值,导致除法以浮点计算。)还有其他补救措施,但我觉得这个是最清楚的。
答案 1 :(得分:1)
由于Main.FPS
是int
,1000/Main.FPS
也是int
,等于100
。然后,您继续计算100/1000
。由于这是一个integer division,因此只会采用“整体”部分,而是0
。
使用浮点文字将导致Java使用浮点除法,这应该产生正确的结果:
double blocksToAdd = o.getVelocity() * ((1000.0 /Main.FPS ) / 1000.0);
// Here --------------------------------------^--------------------^