Java双重计算问题

Java双重计算问题,java,Java,我目前正在做一个基于网格系统的交通模拟。出于某种原因,计算我必须添加多少块的代码行总是返回0。我在没有变量的情况下尝试过,但仍然不起作用 double blocksToAdd = o.getVelocity()*((1000/Main.FPS)/1000); 目前,速度等于1.0f,模拟以10 FPS的速度运行,因此blocksToAdd应为0.1,但它总是返回0,这很可能是由于整数除法转换分数 用1000.0替换第一个1000,一切都会好起来。(后者是一个浮点双字,导致以浮点计算除法。)还有

我目前正在做一个基于网格系统的交通模拟。出于某种原因,计算我必须添加多少块的代码行总是返回0。我在没有变量的情况下尝试过,但仍然不起作用

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

目前,速度等于1.0f,模拟以10 FPS的速度运行,因此
blocksToAdd
应为
0.1
,但它总是返回
0
,这很可能是由于整数除法转换分数


用1000.0替换第一个1000,一切都会好起来。(后者是一个浮点双字,导致以浮点计算除法。)还有其他补救措施,但我发现这一种最为明确。

最有可能是由于整数除法对分数进行了调整


用1000.0替换第一个1000,一切都会好起来。(后者是一个浮点双字,导致以浮点计算除法。)还有其他补救办法,但我发现这是最清楚的。

因为
Main.FPS
int
1000/Main.FPS
也是
int
,等于
100
。然后继续计算
100/1000
。由于这是一个示例,因此只取“整体”部分,给出
0

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

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

由于
Main.FPS
int
1000/Main.FPS
也是
int
,等于
100
。然后继续计算
100/1000
。由于这是一个示例,因此只取“整体”部分,给出
0

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

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

你能发布
Main.FPS
声明吗?我认为你的Main.FPS是整数变量。使其成为双整数可能是导致这种情况的原因。将
1000
更改为
1000.0
以强制使用浮点运算。您可以发布
Main.FPS
声明吗?我认为您的Main.FPS是整数变量。使其成为双整数可能是导致这种情况的原因。将
1000.0的
1000
更改为强制浮点运算。