这就是我创建q的方式
Double q = ((r * (i/5)) + y);
此时其他变量的值为
r = 3.470694142992069E-5
i = 1
y = -116.30237535361584
但是
q = -116.30237535361584
这个数学有问题吗? (Java)
q should be -116.30236841222755
答案 0 :(得分:6)
i和5都是整数,因此(i / 5)部分求值为整数(0)。这反过来乘以r,所以你只剩下y的值。
答案 1 :(得分:5)
尝试
Double q = ((r * ((double)i/5)) + y);
这是完整的代码。
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
double r = 3.470694142992069E-5;
int i = 1;
double y = -116.30237535361584;
Double q = ((r * ((double)i/5)) + y);
System.out.println(q);
}
}
输出: -116.30236841222755
答案 2 :(得分:2)
如果i
是一个整数(似乎就是这种情况),那么i/5
表达式将执行整数运算,结果为零。
答案 3 :(得分:1)
i
不是双倍的。整数分区。任何时候0都是0.
答案 4 :(得分:1)
也许你可以试试
Double q = ((r * i/5.0) + y);
答案 5 :(得分:0)
浮点值非常不精确。你所展示的差异可以用于双算术。如果您确实需要额外的精度,jquantity是一个用于精确数学的开源Java库。