若有定義:float n;int m;則以下能實現將 n 中的數值保留小數點後兩位,第三位進行四捨五入的表達式 是( B )。
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
怎麼理解怎麼選的??
你首先要知道:float/int==float。
float n要保留兩位小數,就意味著要先把浮點向前移兩位,即
int m;
m=(int)(n*100); //先把小數點第三位後的去掉
n=m/100.0; //這裡先不考慮四捨五入
你可以用n=1.234代入進去。
現在我們考慮四捨五入:
我們知道,浮點型強制轉換成int類型是把小數點後的全部去掉,不管小數點後是.9還是.1.
而你要四捨五入,就先把float+0.5,再強制轉換成int,這樣就能實現大於0.5的轉換後進1了。
然後再n=m/100.0轉換成浮點型;
代碼如下:
int m;
m=(int)(n*100+0.5); //先四捨五入,再轉換成int
n=m/100.0; //再轉回來