2012-02-18 212 views
2

我試圖計算圖像的長寬比:Java浮點數學錯誤?

Log.d("img.width:", String.valueOf(img.getIntrinsicWidth())); 
Log.d("img.height:", String.valueOf(img.getIntrinsicHeight())); 
float aspect = ((float)img.getIntrinsicWidth())/((float)img.getIntrinsicWidth()); 
Log.d("aspect:", String.valueOf(aspect)); 

然而,這會產生意想不到的結果:

img.width: 297 
img.height: 167 
aspect:  1.0 

這似乎是它有一個簡單的答案,但我想不出它出。

回答

8

您將寬度除以寬度。嘗試用高度代替其中的一個。

+0

哦哇。是的,這會導致問題。 – 2012-02-18 06:18:59

5

您有一個錯字。

float aspect = ((float)img.getIntrinsicWidth())/
               ((float)img.getIntrinsicWidth()); 

您正在由寬度,這將總是由高度代替產生1,除分割寬度:

float aspect = ((float)img.getIntrinsicWidth())/
               ((float)img.getIntrinsicHeight()); 
2

它的一個錯字,它們中的一個必須是高度。您將通過寬度寬

float aspect = ((float)img.getIntrinsicWidth())/((float)img.getIntrinsicWidth()); 
1

有你嘗試float aspect = (new float(img.getIntrinsicWidth()))/(new float(img.getIntrinsicWidth()));

+0

爲什麼你會期望這給出正確的答案? – 2012-02-18 06:18:06

+0

沒有注意到寬度/寬度,原始海報造成的錯誤,但認爲鑄件可能存在問題,因此可能嘗試創建新實例會有所幫助。 – Churk 2012-02-18 06:20:18

1

你有一個錯字,你將通過寬度寬。應該可以按高度寬度。另外,爲了讓它在眼睛上更容易一點,你不需要將雙方都分配給使用浮動物;如果右側是一個,則左側將被自動浮動。

float aspect = img.getIntrinsicWidth()/(float)img.getIntrinsicHeight();