C/C++之取整函数
生活随笔
收集整理的這篇文章主要介紹了
C/C++之取整函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C/C++之取整函數(shù)
后面的double x放的是你的浮點(diǎn)型參數(shù)。
取整函數(shù)向上取整和向下取整有現(xiàn)成的函數(shù)。不過它們的缺點(diǎn)是正數(shù)和負(fù)數(shù)用到的函數(shù)是相反的容易混淆。
| floor() | 返回不大于自變量的最大整數(shù) | 1 | 1 | -2 | -2 |
| ceil() | 返回不小于自變量的最大整數(shù) | 2 | 2 | -1 | -1 |
| round() | 返回四舍五入到最鄰近的整數(shù) | 1 | 2 | -1 | -2 |
round四舍五入函數(shù)則需要自己寫。
所以這里我就列出自己寫的函數(shù)。直接針對向上取整、向下取整、四舍五入的問題正負(fù)數(shù)通用的函數(shù)。
向上取整
double cei(double x)//向上取整 {return (int)( (x>0.0)?x+1:x-1 ); } //用到了三目運(yùn)算符和強(qiáng)制轉(zhuǎn)換。 //解析,return里面的式子是三目運(yùn)算符。因?yàn)閺?qiáng)制轉(zhuǎn)整形會(huì)自動(dòng)去掉小數(shù)點(diǎn),所以大于0的數(shù)+1,強(qiáng)轉(zhuǎn)整形后小數(shù)位自動(dòng)舍棄。小于0的數(shù)同理。向下取整
如果你要輸出為浮點(diǎn)型,整形記得要強(qiáng)轉(zhuǎn)成double型。
(double)( (int)(double x) ) //解析這個(gè)就是用到了強(qiáng)制轉(zhuǎn)換整形,舍棄小數(shù)位。四舍五入
自己寫一個(gè)round函數(shù)
double round(double x)//返回浮點(diǎn)型 {return (int)( (x>0.0)?x+0.5:x-0.5 ); } //解析,return里面的式子是三目運(yùn)算符。因?yàn)閺?qiáng)制轉(zhuǎn)整形會(huì)自動(dòng)去掉小數(shù)點(diǎn),所以大于0的數(shù)+0.5如果小數(shù)位小于0.5那么整數(shù)位不會(huì)進(jìn)1,大于等于0.5加了0.5后,整數(shù)位會(huì)進(jìn)1。小于0的數(shù)同理。測試代碼
#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;//臨時(shí)函數(shù) 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; }運(yùn)行結(jié)果截圖
總結(jié)
以上是生活随笔為你收集整理的C/C++之取整函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab 画多根线,matlab p
- 下一篇: 单纯形法笔记