2012-11-08 56 views
21
Utilities.getDistance(uni, enemyuni) <= uni.getAttackRange() 

Utilities.getDistance返回雙和getAttackRange返回INT。上面的代碼是if語句的一部分,它需要是真實的。那麼比較是否有效?在java中比較double和int是否有效?

感謝

+0

你嘗試了嗎?它有用嗎? –

+0

我如何測試它是否有效。編譯器接受它,但我不知道實際的數字值是否確實被比較。 – Crone

+1

你試過了嗎?在java代碼中進行簡單的測試就足夠了。檢查我的答案相同 –

回答

2

這應該是罰款。 在浮點運算/比較中,如果一個參數浮動/雙重然後另一個是int也被提升爲相同。

0

馬上就好。

Java將簡單地返回數值的真等於:上述

int n = 10; 
    double f = 10.0; 
    System.out.println(f==n); 

的代碼打印真。

+1

您必須小心(通常甚至避免)將浮點值與'=='運算符進行比較。 –

+0

你想要比較這兩個值與什麼? – Flawyte

+0

所有'int's都可以用'double'來表示。 –

5

當執行具有兩種不同數值類型操作(包括比較),Java將執行隱式擴大轉換。這意味着,當您將doubleint進行比較時,int將轉換爲double,以便Java可以將這些值作爲兩個double s進行比較。所以簡短的回答是肯定的,比較一個int和一個double是有效的,但有一個警告。

的問題是,你不應該使用,因爲精度可能出現的錯誤==<=,或>=運營商平等比較兩個浮PIONT值。此外,您需要小心雙倍可以採用的特殊值:NaN,POSITIVE_INFINITYNEGATIVE_INFINITY。我強烈建議您在比較double時進行一些研究並瞭解這些問題。

+0

有趣的是這是我的教授代碼。但是,我會調查這個問題現在 – Crone

+0

@Crone對於一個學校任務,你可能可以忽略這些邊緣案例,但你仍然應該知道它們。選擇忽略它們比完全無知更可取。 –

+0

我看不出有什麼問題,比較一個'double'與'<=' or '> ='對'int'。只有確切的平等可能是有問題的。 –

1

是的,它是絕對有效的比較int數據類型和數據類型雙..

int i =10; 
double j= 10.0; 
if (i==j) 
{ 
System.out.println("IT IS TRUE"); 
}