Java 尝试计算坡度时获取0

Java 尝试计算坡度时获取0,java,math,int,zero,Java,Math,Int,Zero,这是一个特定的方程,它给了我0,而它应该给我-0.4-2/5 slope2 = ((yVals[i+2] - originY) / (xVals[i+2] - originX)); -2-0/2+3 slope2是双人的 yVals[]是一个整数数组 原点是整数 为什么它总是返回0?我知道变量的调用是正确的,因为我在不同的VAL上做了println,它们是正确的。您在Java中执行整数除法,其中使用int完成的数学运算必须产生一个int,因此除法会截断小数点以外的任何内容。这意味着在Java中

这是一个特定的方程,它给了我0,而它应该给我-0.4-2/5

slope2 = ((yVals[i+2] - originY) / (xVals[i+2] - originX));
-2-0/2+3

slope2是双人的

yVals[]是一个整数数组

原点是整数


为什么它总是返回0?我知道变量的调用是正确的,因为我在不同的VAL上做了println,它们是正确的。

您在Java中执行整数除法,其中使用int完成的数学运算必须产生一个int,因此除法会截断小数点以外的任何内容。这意味着在Java中,-2/5是0。任务的目标是双重目标是不够的。其中一个操作数必须是双精度或浮点型,才能强制进行浮点运算

slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));
将/运算符的一个操作数强制转换为双精度以强制浮点运算

slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));

您正在Java中执行整数除法,在Java中,使用int完成的数学运算必须产生一个int,因此除法会截断小数点以外的任何值。这意味着在Java中,-2/5是0。任务的目标是双重目标是不够的。其中一个操作数必须是双精度或浮点型,才能强制进行浮点运算

slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));
将/运算符的一个操作数强制转换为双精度以强制浮点运算

slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));

那么等式右侧的所有变量都是整数?你在执行整数除法。将每个子表达式拆分为它自己的变量,并在开始组合它们后查看值的进展情况。那么,也许我需要暂时将int转换为double?@Jeroenvanevel是的,我已经这样做了,并确认它们是正确的。因此,等式右侧的所有变量都是int?您正在执行整数除法。将每个子表达式拆分为其自己的变量,并在开始组合它们后查看值的进度。因此,也许我需要暂时将整数转换为双精度?@Jeroenvanevel是的,我已经这样做了,并确认它们是正确的