51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
IT证书
公众号矩阵
移动端

聊聊几个小数取整函数的问题

开发 后端
在c++的cmath库中提供了几个小数取整的函数ceil() floor() round() trunc,我们可以根据不同的场景去选用它们。

  [[403864]]

在c++的cmath库中提供了几个小数取整的函数ceil() floor() round() trunc,我们可以根据不同的场景去选用它们。

  • ceil函数:向上取整
  • floor函数:向下取整
  • round函数:四舍五入取整
  • trunc函数:舍尾取整

下面我们依次来看看这几个函数的特性。

ceil函数

ceil函数如下定义,函数返回不小于参数arg的最小整数,即向上取整。

  1. float ceil ( float arg ); 
  2. double ceil ( double arg ); 

我们可以用下图来直观的描述它,空心表示横坐标Arg不包含所在点的值,实心表示包含所在点的值。

ceil函数

一个例子:

  1. #include <cmath> 
  2. #include <iostream> 
  3. int main() 
  4.     // ceil 
  5.     std::cout << "ceil(+3.3) = " << std::ceil(+3.3) << '\n' 
  6.               << "ceil(-3.4) = " << std::ceil(-3.4) << '\n' 
  7.               << "ceil(-0.0) = " << std::ceil(-0.0) << '\n' 
  8.               << "ceil(-Inf) = " << std::ceil(-INFINITY) << '\n'

结果如下:

  1. ceil(+3.3) = 4 
  2. ceil(-3.4) = -3 
  3. ceil(-0.0) = -0 
  4. ceil(-Inf) = -inf 

floor函数

floor函数如下定义,函数返回不大于arg的最大整数值,即向下取整。

  1. float floor ( float arg ); 
  2. double floor ( double arg ); 

其取值方法我们可以看下图:

floor函数

再看代码:

  1. #include <cmath> 
  2. #include <iostream> 
  3. int main() 
  4.     // floor 
  5.     std::cout << "floor(+3.6) = " << std::floor(+3.6) << '\n' 
  6.               << "floor(-3.2) = " << std::floor(-3.2) << '\n' 
  7.               << "floor(-0.0) = " << std::floor(-0.0) << '\n' 
  8.               << "floor(-Inf) = " << std::floor(-INFINITY) << '\n'

结果:

  1. floor(+3.6) = 3 
  2. floor(-3.2) = -4 
  3. floor(-0.0) = -0 
  4. floor(-Inf) = -inf 

round函数

round函数是我们最常用的取整方式,通过四舍五入方式取整,其定义如下:

  1. float round ( float arg ); 
  2. double round ( double arg ); 

同样的我们可以用图来描述它:

round

代码也要有:

  1. #include <iostream> 
  2. #include <cmath> 
  3.  
  4. int main() 
  5.     // round 
  6.     std::cout << "round(+4.2) = " << std::round(4.2)  << '\n' 
  7.               << "round(+4.5) = " << std::round(4.5)  << '\n' 
  8.               << "round(+4.7) = " << std::round(4.7)  << '\n' 
  9.               << "round(-4.3) = " << std::round(-4.3) << '\n' 
  10.               << "round(-4.5) = " << std::round(-4.5) << '\n' 
  11.               << "round(-4.8) = " << std::round(-4.8) << '\n'
  12.   

看结果啦~

  1. round(+4.2) = 4 
  2. round(+4.5) = 5 
  3. round(+4.7) = 5 
  4. round(-4.3) = -4 
  5. round(-4.5) = -5 
  6. round(-4.8) = -5 

trunc函数

除了上面几个取整方式之外,还有另外一个取整方式,我们可以叫“舍尾取整”,实际上它的作用是将整数和小数部分截断。

  1. float trunc ( float arg ); 
  2. double trunc ( double arg ); 

从图上可以看出,这个函数的作用是将整数部分保留而舍去小数部分。

图片看示例:

  1. #include <cmath> 
  2. #include <iostream> 
  3. int main() 
  4.     // trunc 
  5.     std::cout << "trunc(+2.7) = " << std::trunc(+2.7) << '\n' 
  6.               << "trunc(-2.9) = " << std::trunc(-2.9) << '\n' 
  7.               << "trunc(-0.0) = " << std::trunc(-0.0) << '\n' 
  8.               << "trunc(-Inf) = " << std::trunc(-INFINITY) << '\n'

结果如下:

  1. trunc(+2.7) = 2 
  2. trunc(-2.9) = -2 
  3. trunc(-0.0) = -0 
  4. trunc(-Inf) = -inf 

最后

以上就是c++中提供的几个取整函数的说明和使用方法,我们一定要熟知其特性而选择正确的函数,在大量的数据运算中,使用不同的函数进行取整,最终的运算结果往往会有着很大的差异。

本文转载自微信公众号「Will的大食堂」,可以通过以下二维码关注。转载本文请联系Will的大食堂公众号。

 

责任编辑:武晓燕 来源: Will的大食堂
相关推荐
C#函数实例应用详解
C取整函数是我们在开发中应用比较广泛的,那么具体的操作是什么呢?让我们来看看这里向大家介绍的内容,希望对你学习C取整函数有所帮助。

2009-09-01 15:47:20

C#取整函数
PHP函数具体使用方法介绍
PHP取整函数是一个功能比较全面的函数,包括:ceil,floor,round,intval等。我们在接下来的文章中为大家详细介绍了各函数的相关用法。

2009-12-01 19:02:20

PHP取整函数
Java反射进阶—聊聊反射几个问题
昨天有朋友反映好多反射知识没说到,所以今天算是补充篇,一起看看反射的进阶知识点。

2021-01-19 08:25:20

Java 反射 进阶
盘点Math类中函数、三角函数和指数函数方法
Math类取整函数方法有ceil、floor、rint、round,这些方法通过例子了解它的用法。Math类三角函数方法有sin、cos、tan、toRadians、toDegrees等,这些方法通过例子了解它的用法。

2021-05-07 09:31:10

三角函数 指数函数 取整函数
探究PHP浮点类型使用规则
PHP浮点类型取整的函数有很多种,包括ceil,floor,round,intval。我们可以根据自己的实际情况来具体的选用,以达到我们的需求。

2009-12-03 14:53:53

PHP浮点类型取整
聊聊setState用法,你会几个
首先,这个问题的抛出,我会想为什么要抛出这个问题呢如果说,你需要依赖状态更新后的值时,那么首先如何做呢

2021-03-12 10:12:09

etState 函数 React
聊聊保证线程安全几个小技巧
线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题。

2022-06-07 23:28:05

线程 安全 后端
向上一点技巧 | C语言
做底层或者说驱动开发时,经常会遇到一些硬件限制,比如STM32有些寄存器要求16bit访问、32bit访问,否则可能引发Hardfault中断;再比如擦除flash扇区时,会要求整块擦除。这些都是硬件决定的,必须这样做。

2021-11-28 22:57:41

C语言 STM32 寄存器
聊聊Hive常见分析函数
denserank函数的功能与rank函数类似,denserank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。当出现名次相同时,则排名序号也相同。而下一个排名的序号与上一个排名序号是连续的。

2021-05-28 08:52:45

Hive 分析 函数
聊聊 SQL 中排名问题
今天给大家介绍一下SQLServer排名中经常用到的ROWNUMBER(),RANK(),DENSERANK(),NTILE()这四个好兄弟。

2021-11-09 06:55:03

SQL Server 排序
聊聊 Javascript 常见高阶函数
高阶函数,英文叫HigherOrderfunction。一个函数可以接收另外一个函数作为参数,这种函数就叫做高阶函数。

2021-09-08 08:55:45

Javascript 高阶函数 前端
聊聊有趣 CSS 数学函数
calc()函数有助于在CSS属性值中执行计算。它可以用在如下属性中:length、frequency、angle、time、percentage、number、integer。

2022-03-30 09:01:37

CSS 属性 函数
聊聊GolangMake和New函数
对于int,string,float,rune,byte,bool等类型,在定义变量的时候系统已经给申请了内存,而且给了对应的默认值(int的默认值为0,string的默认值为"",bool的默认值为false),所以我们可以直接给变量进行赋值操作。

2022-10-24 00:03:26

Golang New 函数
聊聊几个程序员经常用作图软件
程序员除了要写代码之外还经常需要画一些图,这其中包括流程图、软件架构图和一些说明文档的插图等等。目前大家用得比较多的可能是微软的Visio、IBM的Rose或者亿图等软件。这些软件的功能确实非常强大,也完全够我们使用了,但是需要收费的。

2020-11-11 08:38:45

作图软件
聊聊SQL中高级日期函数
细心的同学可能发现DATEPART和DATENAME有很多相似之处,但是请注意他们返回的类型是不同的,DATEPART返回的是数值类型,DATENAME返回的是字符串类型。

2022-10-17 08:22:28

解析Flex几个瓶颈问题
本文向大家介绍一下关于Flex的几个瓶颈问题,主要包括安全方面,数据显示方面,代码分离页面以及外观显示等几个部分,希望本文介绍对你有所帮助。

2010-08-11 09:21:37

AutoMySQLBackup遇到几个问题
使用AutoMySQLBackup备份MariDB时,手工执行shell脚本中的脚本mysqlbackupscriptsautomysqlbackupmysqlbackupscriptsconfmyserver.conf没有问题。

2021-10-12 00:04:24

脚本 备份 MariDB
处理小数点位数Oracle函数
学习Oracle数据库,Oracle中的各种函数是首先需要掌握的知识。下面为您详细介绍关于处理小数点位数的几个oracle函数,供您参考。

2010-10-25 15:37:04

Oracle函数
聊聊JDK8几个方便快捷知识
如果我们要用SQL,那很简单,根据部门分组,如果要是在代码里面呢?就用我们最简单的User来进行分组。

2022-04-21 07:34:34

JDK8 JDK7 数据
聊聊最近给 Node.js 提交几个PR
Node.js在12.7.0版本里已经支持收集HTTPServer处理请求的耗时。在这个基础上,我做的事情主要是支持收集发送一个HTTPRequest到收到响应所需要的耗时。

2022-03-30 08:36:32

Node.js PR HTTP

玻璃钢生产厂家玻璃钢雕塑怎么找销路各大商场对美陈施工的要求铜陵玻璃钢佛像雕塑修复玻璃钢雕塑用什么材料南通佛像玻璃钢雕塑高质量玻璃钢雕塑市场桐乡玻璃钢雕塑厂广东季节性商场美陈市场价厦门手糊法玻璃钢雕塑丹阳商场新春美陈玻璃钢雕塑翻倒新郑肖像玻璃钢卡通雕塑商场美陈产品方案ppt玻璃钢雕塑招兼职雕塑玻璃钢雕塑信赖华艺重庆商城玻璃钢造型雕塑制作汕尾玻璃钢雕塑制品江苏无锡品正企业玻璃钢花盆广东商场美陈研发南召玻璃钢雕塑定制园林玻璃钢雕塑定制武汉商场美陈玻璃钢卡通雕塑邯郸玻璃钢雕塑工厂社区 玻璃钢雕塑季节性商场美陈怎么样七台河校园玻璃钢雕塑制作北京主题商场美陈多少钱池州学校玻璃钢雕塑定做价格如皋玻璃钢雕塑联系方式玻璃钢雕塑墙面安装香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化