2013-12-17 49 views
-2

我目前正在看一些教程,我停留在看起來像這樣的一個部分:Java - 這部分代碼會發生什麼?

int x = (int) a_float/an_int; 

什麼會發梗如果a_float/an_int;不是一個整數?這個數字是否會被四捨五入/被淹沒/奇怪的東西?

+1

是的,它將被執行除法之前舍入爲int – Ashish

+4

當你自己嘗試這個代碼時發生了什麼? – admdrew

+3

你爲什麼不只是執行測試用例? –

回答

2

在Java中,鑄件優先於除法:http://introcs.cs.princeton.edu/java/11precedence/。這意味着如下語句可以細分:

  1. 截斷a_float(基本上都坐地板,並存儲爲int
  2. 待辦事項整數除以an_int
  3. 分配所產生的intx

如果您希望an_int在操作前被提升爲float,那麼請執行劃分,省略投射。其結果將是一個float(你可以比截斷回的int分配前):

int x = (float)(a_float/an_int); 

相同

int x = (float)(a_float/(float)an_int); 

你也可以閱讀本網站的一個很好的解釋這意味着什麼:http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html