2011-06-16 94 views
1

我可能听起来令人难以置信,但现在我正在经历另一种操作。Eclipse中的奇怪行为

double mues1 = 0; 
mues1 = (Math.pow((ab/100),2)*tam); 

其中ab = 4,tam = 400。

这应该给0.64,但是变量保持为0.0,它仅当操作是大于1

如果我^ 2更换math.pow改变它的值,该变量变得800.0不管哪个值有'ab'。

为了说清楚,我正在调试代码,所以我知道它的价值。

我已经重新启动了eclipse和我的电脑,它没有帮助。

回答

2

问题是变量ab是一个整数,您正在执行integer division

根据整数除法,4/100 = 0。要得到结果0.04,请将ab声明为double。如果您使用的是Java的脱字符号,则执行bitwise xor,因此您可能不想使用该字符。

+0

既然我们不能在你的代码段看你怎么声明'ab'和'tam'他可能是正确的。如果你想在Java中使用精度,你需要精确。 – Pedantic 2011-06-16 03:01:50

+0

它是一个插入符号。胡萝卜是一种蔬菜。 – 2011-06-16 03:18:21

3

是ab和int?如果是这样,您需要将ab/100更改为(double)ab/100ab/100.0。否则,它将执行整数除法,即向0截取。换句话说,4/100 = 0.

+0

另外,在Java中,^操作符表示异或,而不是电源。 – jpm 2011-06-16 03:01:08

0

发生这种情况是因为您正在处理int文字,值为4/100 = 0。你应该尝试使用float literals 4.0/100.0来做到这一点。

当您尝试执行4^100时,您正在执行“按位排除”或“,因为这是在Java中指的是^。这不符合你的想法,所以不要这样做。

0

您从浮痛苦/降级双重价值为整数,所以任何0.nn被截断为0

试试这个:

mues1 = (Math.pow(((双)AB/100),2)*(双)TAM);

或只是声明abtam为双