C/C++之取整函数
生活随笔
收集整理的這篇文章主要介紹了
C/C++之取整函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C/C++之取整函數
后面的double x放的是你的浮點型參數。
取整函數向上取整和向下取整有現成的函數。不過它們的缺點是正數和負數用到的函數是相反的容易混淆。
| floor() | 返回不大于自變量的最大整數 | 1 | 1 | -2 | -2 |
| ceil() | 返回不小于自變量的最大整數 | 2 | 2 | -1 | -1 |
| round() | 返回四舍五入到最鄰近的整數 | 1 | 2 | -1 | -2 |
round四舍五入函數則需要自己寫。
所以這里我就列出自己寫的函數。直接針對向上取整、向下取整、四舍五入的問題正負數通用的函數。
向上取整
double cei(double x)//向上取整 {return (int)( (x>0.0)?x+1:x-1 ); } //用到了三目運算符和強制轉換。 //解析,return里面的式子是三目運算符。因為強制轉整形會自動去掉小數點,所以大于0的數+1,強轉整形后小數位自動舍棄。小于0的數同理。向下取整
如果你要輸出為浮點型,整形記得要強轉成double型。
(double)( (int)(double x) ) //解析這個就是用到了強制轉換整形,舍棄小數位。四舍五入
自己寫一個round函數
double round(double x)//返回浮點型 {return (int)( (x>0.0)?x+0.5:x-0.5 ); } //解析,return里面的式子是三目運算符。因為強制轉整形會自動去掉小數點,所以大于0的數+0.5如果小數位小于0.5那么整數位不會進1,大于等于0.5加了0.5后,整數位會進1。小于0的數同理。測試代碼
#include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <algorithm>using namespace std;double round(double x)//四舍五入 {return (int)( (x>0.0)?x+0.5:x-0.5 ); }double cei(double x)//向上取整 {return (int)( (x>0.0)?x+1:x-1 ); } int main(void) {double temp;//臨時函數 double a = 1.1;//temp = double ceil(a);printf("a = %lf\na 的向上取整為%lf\na 的向下取整為%lf\na 的四舍五入為%lf\n\n",a,cei(a),(double)( (int)a),round(a) );double b = 1.5;printf("b = %lf\nb 的向上取整為%lf\nb 的向下取整為%lf\nb 的四舍五入為%lf\n\n",b,cei(b),(double)( (int)b),round(b) );a = -1.1;b = -1.5; printf("a = %lf\na 的向上取整為%lf\na 的向下取整為%lf\na 的四舍五入為%lf\n\n",a,cei(a),(double)( (int)a),round(a) );printf("b = %lf\nb 的向上取整為%lf\nb 的向下取整為%lf\nb 的四舍五入為%lf\n\n",b,cei(b),(double)( (int)b),round(b) );return 0; }運行結果截圖
總結
以上是生活随笔為你收集整理的C/C++之取整函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab 画多根线,matlab p
- 下一篇: UM3304QT二三事