java使用 float 和 double 进行计算

标签 java math opengl lwjgl

我的 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 ,但始终为零。

最佳答案

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

关于java使用 float 和 double 进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15853643/

相关文章:

opengl - GLSL 中可以进行可变参数宏扩展吗?

java - 从 java.awt.geom.GeneralPath 中删除一个点/操作

java - 如何测量java方法的内存使用情况

java - 如何使用 Java Stream 将 List<Src> 映射到对象 Tgt?

conio.h : No such file or directory using Linux?

java - 使用 JOGL 和 Android OpenGL 编写可移植的 Java 应用程序

OpenGL 0(84) : error C7623: implicit narrowing of type from "vec4" to "float"

java - 延迟加载不适用于 Hibernate 中的@Formula

javascript - 如何用 javascript 计算 ARM 上的年利率

java - Android 获取相对于地平线的角度