最近蠻常用到數值處理的函式,在這裡紀錄一下,嵌入式系統內常用的數值處理函式,這些函式是在math.h 檔裡,所以使用時記得#include <math.h>。下列分別記錄函式使用方式及結果。
註:使用codeblock編譯器測試
1.四捨五入 round(float)
-程式碼
#include <stdio.h>
#include <math.h>
#define TestNum1 3.4415
#define TestNum2 3.5415
int main()
{
printf("Number1:%f\n",TestNum1);
printf("Round off:%f\n",round(TestNum1));
printf("Number2:%f\n",TestNum2);
printf("Round off:%.3f\n",round(TestNum2));
return 0;
}
-結果
Number1:3.441500
Round off:3.000000
Number2:3.541500
Round off:4.000
我們可以觀察到,使用round()函式後,會依據小數點第二位進行四捨五入至整數位數。
2.無條件捨去floor(float)
-程式碼
#include <stdio.h>
#include <math.h>
#define TestNum1 3.4415
#define TestNum2 3.5415
int main()
{
printf("Number1:%f\n",TestNum1);
printf("Round up:%f\n",floor(TestNum1));
printf("Number2:%f\n",TestNum2);
printf("Round up:%f\n",floor(TestNum2));
return 0;
}
-結果
Number1:3.441500
Round up:3.000000
Number2:3.541500
Round up:3.000000
我們可以觀察到,使用floor()函式後,會依據小數點後進行無條件捨去。
3.無條件進位ceil(float)
-程式碼
#include <stdio.h>
#include <math.h>
#define TestNum1 3.4415
#define TestNum2 3.5415
int main()
{
printf("Number1:%f\n",TestNum1);
printf("Round down:%f\n",ceil(TestNum1));
printf("Number2:%f\n",TestNum2);
printf("Round down:%f\n",ceil(TestNum2));
return 0;
}
-結果
Number1:3.441500
Round down:4.000000
Number2:3.541500
Round down:4.000000
我們可以觀察到,使用ceil()函式後,會依據小數點後進行無條件進位到整數位。
參考來源
英文名稱翻譯https://blog.udn.com/hhu6314/3389484
https://fresh2refresh.com/c-programming/c-arithmetic-functions/c-round-function/
https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html
沒有留言:
發佈留言