c語言函數四捨五入
① c語言四捨五入
intmain()
{
floata;
intm;
scanf("%f",&a);
printf("%d",(int)(a+0.5));
return0;
}
② C語言編寫四捨五入函數
floatnum=3.14159
floatf;
f=((int)(num*10000+0.5))/10000.0;
過程如下31415.9+0.5=31416.4
取整31416然後除以10000.0
隱式轉換為float3.1416
③ c語言中有沒有四捨五入的函數
double ceil(double x)返回不小於x的最小整數值(然後轉換為double型)。
double floor(double x)返回不大於x的最大整數值。
double round(double x)返回x的四捨五入整數值
int abs(int) 返回整數絕對值
double fabs(double) 返回浮點數絕對值
④ C語言中,四捨五入函數是什麼
round(x)
參數時double型,返回小數對整數部分的四捨五入值
比如 round(3.623); 返回4
⑤ c語言中有沒有進行四捨五入的函數
四捨五入演算法:如果要求精確到小數點後面的第n位,則需要對第n+1位進行運算。方法是將該小數乘以10的n+1次方後加5,然後除以10並強制轉換變數類型為長整型,再將該數除以10的n次方,同時強制轉換類型為浮點型。
代碼實現如下:
long t;/*定義長整型變數t*/
t=(h*10n+1+5)/10;/*對h進行操作,得到值浮點型,t取值時取整數部分。10n+1為要擴大的倍數*/
h=(float)t/10n; /*將t縮小10n倍,並轉換成浮點型*/
⑥ c語言中有沒有進行四捨五入的函數
首先,這個問題的解決方案取決於我們所需要的轉換方式:是截斷轉換還是舍入轉換;另一方面,它基本與我們需要轉換的浮點數類型無關──無論是 float 還是 double,甚至是 long double。
有時人們覺得一個浮點變數的值和一個整型變數的值可以完全一樣地可表示,你可能相信 x 值為 100.0 時我們只要把它轉換為整型就會得到整數 100。但在任何時候,你都不應依賴於期望一個浮點數的值能夠與一個整型數的值完全相等,你真正所需要的可能是四捨五入。
截斷轉換的意思是拋棄所有的小數部分,例如 3.9 將被轉換為 3,這種轉換是 C 語言中將浮點數轉換為整型數的默認方式,也就是說無論在什麼時候,只要將浮點數轉換為整型數,採用的都是這種方式。關於這種轉換何時發生,有一些特殊的規定,這里我們僅指出賦值時所發生的轉換,比如
i = x;
其中 i 是一個整型數,x 是一個浮點數。當然,在顯式類型轉換的情況下,這樣的轉換也會發生,比如
(int) x
舍入轉換是指獲取與給定浮點數最為接近的整型數,因此 3.9 應被轉換為 4,這才是人們提出我們正在解決的這個問題時所真正需要的。對於舍入轉換,我們沒有直接的工具(比如運算符或者庫函數),嚴格地說,舍入轉換並非與 C 標准里所定義的轉換在同一意義下的轉換。
對於正的浮點數,最簡單的四捨五入方法就是用這樣的一個表達式
(long) (x+0.5)
但是如果表達式對負數有效的話會更好,即使在你看來負數的情況不會發生。這意味著你可以用一個條件表達式:
x >= 0 ? (long)(x+0.5) : (long)(x-0.5)
這個表達式的返回值就是與浮點變數 x 的值最接近的整數值。
如果需要大量地使用舍入轉換,則可以寫這樣的一個宏:
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
這可以在某種程度上使代碼更具可讀性。
注意到這樣的轉換會將 1.5 變為 2 但卻將 -1.5 變為 -2,那麼對於這樣正好處於兩個整數之間的浮點數,你可能需要做一些其它的處理,但這在實際當中並不十分重要。
需要小心的是,將一個浮點數轉換為一個整型數可能導致上溢,但大多數的實現都沒有進行相關的判斷。用 long 替代 int 會給出一個更寬的范圍(建議使用 long),但仍然比浮點數的范圍要小得多。
如果效率不是至關重要的話,則可以定義這樣的一個函數(而不是簡單地寫一個 #define),使你的程序更具魯棒性:
long round(double x) {
assert(x >= LONG_MIN-0.5);
assert(x <= LONG_MAX+0.5);
if (x >= 0)
return (long) (x+0.5);
return (long) (x-0.5);
}
如果在意效率的話,可以寫這樣一個宏
#define round(x) ((x) < LONG_MIN-0.5 || (x) > LONG_MAX+0.5 ?\
error() : ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
這要求在程序中有 #include <limits.h>,並且有一個處理錯誤的函數 error,其返回值為 long 類型。
⑦ C語言問題,這里怎麼實現四捨五入的啊
假定一個數字x值是10.456,那麼保留兩位,第三位四捨五入的方法就是先將x乘以100,變成1045.6,然後加上0.5,得到1046.1,然後去除1046.1的小數部分(也就是強制轉為int),得到1046,再用1046除以100.0就得到最終的10.46,寫出來也就是
x=(int)(x*100+0.5)/100.0
⑧ c語言的四捨五入
加0.5本來就是個權益之計,使用這個來做四捨五入這不是什麼好習慣。
弄得程序亂七八糟的,程序的維護也變得很困難,不定那裡漏了個0.5就會導致運算錯誤。
0.5滿天飛的程序,可想而知。
math.h有專門的四捨五入函數,round(x)。
⑨ c語言中怎麼四捨五入
設 float x ; int y ; 則有y=(int)(x+0.5)>(int)x?(int)x+1:(int)x進行上述運算後,y 的值就是 x 四捨五入的結果。