我可能听起来令人难以置信的是我现在正在经历的事情,但我还有其他操作的代码。
double mues1 = 0;
mues1 = (Math.pow((ab/100),2)*tam);
其中ab = 4,tam = 400。
这应该给.64,但变量保持为0.0,并且只有在操作大于1时才改变它的值。
如果我用^ 2替换math.pow,无论哪个值为'ab',变量都变为800.0。
为了说清楚,我正在调试代码,所以我知道它的价值。
我已经重新开始使用eclipse和我的计算机而且没有用。
答案 0 :(得分:3)
ab和int?如果是这样,您需要将ab/100
更改为(double)ab/100
或ab/100.0
。否则,它将执行截断为0的整数除法。换句话说,4/100 = 0。
答案 1 :(得分:2)
问题是变量ab
是一个整数,而您正在执行integer division。
根据整数除法,4/100 = 0
。要获得结果0.04
,请将ab
声明为双倍。
仅供参考,Java中的插入符号执行bitwise xor,因此您可能不想使用它。
答案 2 :(得分:0)
这种情况正在发生,因为你正在处理int文字,即4/100 = 0
的值。您应该尝试使用浮点文字4.0/100.0
来执行此操作。
当您尝试执行4^100
时,您正在执行“按位异或”,因为这是^
在Java中的含义。这不是你认为的那样,所以不要这样做。
答案 3 :(得分:0)
您正在将float / double值降级为整数,因此任何0.nn都会被截断为0。
试试这个:
mues1 = (Math.pow(((双)AB / 100),2)*(双)TAM);
或者只需将ab
和tam
声明为双重