我的 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,因此它必须返回 float 。它返回 float ,但始终为零。
最佳答案
timeNow
是 long
类型。你的部门的“上部”部分给出了一个长的。全师将给予长。您需要将其转换为 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
关于java使用 float 和 double 进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15853643/