Eclipse中的奇怪行为

时间:2011-06-16 02:56:10

标签: java android eclipse

我可能听起来令人难以置信的是我现在正在经历的事情,但我还有其他操作的代码。

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和我的计算机而且没有用。

4 个答案:

答案 0 :(得分:3)

ab和int?如果是这样,您需要将ab/100更改为(double)ab/100ab/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);

或者只需将abtam声明为双重