1. 程式人生 > >C 語言數值取整

C 語言數值取整

取整

預設情況下

// 丟棄小數點後面的值,結果為正數時可以認為是向下取整;結果為負數時取值結果和編譯器相關
int c = (a / b);

除此之外還有兩個函式可以實現向上取整或向下取整

// ceil 可以理解為向正方向取整。如 3.5 取整為 4. -3.5取整為 -3
double ceil(double x);
float ceilf(float x);

// floor 可以理解為向負方向取整。如 3.5 取整為 3. -3.5取整為 -4
double floor(double x);
float floorf(float x);

實現向上取整還可以使用如下方法

int a = 10
, b = 3, c = 0; c = (a + b - 1) / b;

向下取整

float b = -10.5;
bool positive = b > 0;
if (!positive) {
    b *= (-1.0f);
}
int c = (int)b;
c = positive ? c : ((c + 1) * (-1));

四捨五入

float b = 10;
float a = 3;
int c = (int)((b / a) + 0.5);

使用上面的方法可以實現更靈活的進位方式

// 實現逢 3 進位
float b = 10;
float a = 3;
int c = (int
)((b / a) + 0.7);
// 實現逢 6 進位
float b = 10;
float a = 3;
int c = (int)((b / a) + 0.4);

相關推薦

C 語言數值

取整 預設情況下 // 丟棄小數點後面的值,結果為正數時可以認為是向下取整;結果為負數時取值結果和編譯器相關 int c = (a / b); 除此之外還有兩個函式可以實現向上取整或向下取整 // ceil 可以理解為向正方向取整。如 3.5 取整為 4

JavaScript四種數值方法

markdown post 定義 個數 -m java math 示例 最小整數 一、Math.trunc() 1.定義 Math.trunc()方法去除數字的小數部分,保留整數部分。 2.語法 Math.trunc(value) 3.示例 console.log(Math

C語言小結--三個數中的中間數

今天遇到一個問題,求三個數中的中間數。 我的思路是:先求兩個數中的最小數,然後把這個最小數和另一個數求最大數,這樣就取出了中間數。 求最大數和最小數的巨集定義如下: #define MAX(a, b) (((a) > (b) ) ? (a) : (b)) #defi

PHP中的算數運算子以及數值的方法

1.在php中的算數運算子包括:+ - * / % 對於“+”,兩個數值相加時會直接相加,但是當一個數值型別和一個字串型別的相加時,程式會自動的將字串型別的轉化為數值型別的。其轉化方法從字串的第一個開始轉化,到不是數字的那個終止。如果第一個就不是數值的話,就會轉化為0。 舉個例子吧: 兩

C語言 數值交換的三種方法

一、程式設計思想 (1)通過建立第三個變數來交換數值; (2)不建立變數,通過加減的方式交換(PS:如果倆個數值過大,則可能會溢位) (3)不建立變數,通過異或操作符交換(最高效簡潔,不會溢位,是1、2的升級) ——異或的思想 將數值以ASCII碼的形式,按二進

[C語言]數值轉換問題/迴文判斷/商品貨架管理

最近時間有點緊啊,看來部落格更新速度又要減慢了。 C語言實現數值轉換 問題描述 將十進位制數N和其它d進位制數的轉換是計算機實現計算的基本問題,其解決方案很多,其中最簡單方法基於下列原理:

C/C++的截斷例項

在C/C++中7%(-4)=?,(-7)%4=?,(-7)%(-4)=? C/C++的除法採用向零取整,而不是上取整或下取整。向零取整即向0方向取最接近精確值的整數,換言之就是捨去小數部分,因此又稱截斷取整。對負數取模問題,應先求出二者的商,再使用公式【餘數=被除數-商×除

C語言無符號型轉換字串,字串轉換無符號

char* UInt32toStr(unsigned int n) {     char buf[10] = "";   static char str[10]="";   unsigned int i = 0;   unsigned

c語言_值範圍】int long longlong

mark unsigned int 0~4294967295  int -2147483648~2147483647 unsigned long 0~4294967295long -2147483648~2147483647long long的最大值:92233720368

C語言中的型溢位和移位溢位

1 整型溢位 原文連結:https://coolshell.cn/articles/11466.html     1.1 無符號整型溢位和有符號整型溢位    對於unsigned整型溢位,C的規範是有定義的——“溢位後的數會以2^(8*sizeof(type))作模運

c語言地址解析

定義:int a[2],*p =a;表示a[1]的地址有p+1,a+1,++p 我試了一下a++怎麼不行,查了之後說是 參考:http://blog.csdn.net/lyn_bigdream/article/details/8181850 還有逗號運算子的級別是最低的

c語言一個矩陣的最大值及其下標

思想:將矩陣看做一個二維陣列,用scanf()函式輸入矩陣,將陣列首位設定為最大值max,將max與陣列中數按順序兩兩比較,更新max,比較到最後一位得到最終max。void main(){    int a[3][4],i,j,max,max_i,max_j;    pri

單鏈表的基本操作(C語言)//以型為例

        單鏈表與陣列相似,但是單鏈表堆記憶體的運用更加的方便,能夠充分的利用零散的記憶體,在中間新增或者刪除一個或多個元素時不需要像陣列一樣移動大量的元素。單鏈表的操作中,涉及到單鏈表元素變化的許耀中指向指標的指標操作。        下面是單鏈表的兩種建立方式以及其

C語言中各種型型別所佔位元組數

平臺: 64位編譯器+LINUX+Gcc #include<stdio.h> main() { char a; char* b; short int c; int d; unsigned int e

C語言型溢位問題 int、long、long long值範圍 最大最小值

《C和指標》中寫過:long與int:標準只規定long不小於int的長度,int不小於short的長度。 double與int型別的儲存機制不同,long int的8個位元組全部都是資料位,而double是以尾數,底數,指數的形式表示的,類似科學計數法,因此double比i

C語言中負數除法與右移問題

今天碰到了負數除法與右移的替代問題,藉機研究一下C語言中負數除法的問題。此處只討論整數除2的冪次方的情況,並取-7~-5除以4為例,不討論一般除法的移位優化。 負數右移 對於有符號整數,右移時按高位補符號位的原則,則結果會向小於它的整數取整。如 -5 >

C語言如何進行

    C語言有以下幾種取整方法:      1、直接賦值給整數變數。如:      int i = 2.5; 或 i = (int) 2.5;      這種方法採用的是捨去小數部分,可以用於你的問題。      2、C/C++中的整數除法運算子“/”本身就有取整功能(int / int),而下面介紹的取整

C語言的幾種方法

C語言有以下幾種取整方法: 1、直接賦值給整數變數。如: int i = 2.5; 或 i = (int) 2.5; 這種方法採用的是捨去小數部分 2、C/C++中的整數除法運算子“/”本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的C編

計算機二級-C語言-程式修改題-190114記錄-對型變數進行餘操作可以取得各個位上的值。

//給定程式中fun函式的功能是:從低位開始取出長整形變數s中奇數位上的數,依次構成一個新的數放在t中。高位仍在高位,低位仍在低位。例如:當s中的數為7654321時,t中的數為7531。 //重難點:函式傳遞的形參和實參型別要一致。對整型變數進行取餘操作可以取得各個位上的值。 1 #includ

C語言基礎: 浮點數轉化整數(向上、向下)| 求絕對值函式

Objective-C拓展了C,自然很多用法是和C一致的。比如浮點數轉化成整數,就有以下四種情況。  1.簡單粗暴,直接轉化 float f = 1.5; int a;a = (int)f; NSLog("a = %d",a); 輸出結果是1。(int)是強制型別轉化,丟棄浮點數的小數部分。