程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-C語言小數點捨入問題,求大神!!

c-C語言小數點捨入問題,求大神!!

編輯:編程綜合問答
C語言小數點捨入問題,求大神!!

若有定義: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;           //再轉回來 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved