2012-10-20 30 views
1

我是Java新手,只是試圖根據數學運算轉換一個變量。讓我們以下方案:Java - 如何快速轉換變量整數 - > float?

int var_result; 
if(addition) { 
    var_result = number1+number2; // number1, number2 => integers 
} 
else if(division){ 
    var_result = (float) number1/number2; 
    // and here is the problem - I don't know, how to convert "var_result" from integer to float 
} 

...just print var result ... 

有沒有什麼快捷方式,如何將var_result變量轉換在這種情況下?在這個例子中,最簡單的方法是不轉換它,只是用float var_result_float,但我並不想解決它這樣...

感謝

+1

*「我不想這樣解決......」*爲什麼不呢? (AKA「爲什麼要關心你想要什麼?」) –

+1

你是什麼意思?有沒有什麼快捷方式,?這將需要約20納秒,這是不夠快? –

回答

4

int var_result;已聲明。你不能期望存儲一個浮點數,而不會失去精度。

當您執行類型轉換時,該變量暫時作爲另一種類型用於評估表達式,但不會改變它的實際內容。

int仍然是int。你應該用float var_result_float來存儲一個浮點數。

3

int var_result是一個int變量。
如果你需要一個float使用float var_result

我不想去解決它這樣...

嗯......這是唯一方式

+0

不僅如此,可以使用Object引用和Float或Integer實例。或者創建FloatOrInt類,並引入適當的getter和setter以及異常。當然,這通常不是有用的或理智的,但它是可能的;-) – hyde

1

如果您需要在變量中存儲intfloat,您可以使用double來存儲所有可能的值。

恕我直言,不要使用float如果你可以避免它,因爲它的精度相當差。

1

您不能更改變量的類型,但你可以得到你想要的東西是這樣的:

Object var_result; 
if(addition) { 
    var_result = new Integer(number1+number2); // number1, number2 => integers 
} 
else if(division){ 
    var_result = new Float((float) number1/(float) number2); 
} 

當然使用的數字,你必須與測試的instanceof類型和不轉換爲浮動或Integer,因此這非常笨拙。