0

我有java数学问题。我有以下表达:

double tripp = (timeNow-previousTime)/(seconds*Sys.getTimerResolution())*trip;

我试图计算我的立方体的旋转速度。这是我执行该功能的完整代码:

public float getTripLenghtToGo(int seconds, double trip) {
    long timeNow = Sys.getTime();
    System.out.println("RES: "+Sys.getTimerResolution());
    double tripp = (timeNow-previousTime)/(seconds*Sys.getTimerResolution())*trip;
    System.out.println("("+timeNow+"-"+previousTime+")/("+seconds+"*"+Sys.getTimerResolution()+")*"+trip+" = "+tripp);
    if(tripp != 0){
        previousTime = timeNow;
    }
    return (float)tripp;
}

我使用 OpenGL,所以它必须返回浮点数。它返回浮点数,但始终为零。

4

2 回答 2

2

timeNowlong类型。你部门的“上部”部分给出了一个很长的部分。整个师都会给一个长的。您需要将其转换为 double,否则小数部分将丢失。

例如,输出:

long timeNow = 10;
long previousTime = 1;
double trip = 0.1d;
int seconds = 50;

double trippCast = ((double) (timeNow-previousTime))/((double)seconds)*trip;
System.out.println(trippCast);
double trippWithoutCast = (timeNow-previousTime)/seconds*trip;
System.out.println(trippWithoutCast);

是:

0.018
0.0
于 2013-04-06T17:11:30.880 回答
0

两种可能:

  • 使用System.nanoTime()- 它为您提供更精确的时间测量
  • 使用((double)(timeNow-previousTime))/(seconds*Sys.getTimerResolution())- 如果将 long 与 int 相除,则结果会很长。那就是0L
于 2013-04-06T17:12:16.827 回答