2011-06-16 55 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爲雙