• C++知识精讲12——取整方式及实战讲解【全网最详细取整“集合”】


    作者:Yu仙笙真滴卷😎

    专栏:C++知识精讲🏀

    文章简介:

    本文我们来讲C++知识精讲的第13篇,取整方式及实战讲解,此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持。接下来,进入今天的知识精讲。 

    强烈建议点赞收藏起来,干货太多,以免以后找不到!😘

    真的全网最详细!!!😎

    这是作者的得意之作,啊哈哈哈🤣

    目录

    取整方式 

    First·向0取整

    含义:

    用法:

    代码实现示例:

    trunc函数使用的头文件 

    trunc函数基本用法

    代码实现示例 :

     Second·四舍五入

    含义:

    用法: 

    round函数用的头文件

    round函数基本用法

    代码实现示例:

    Third·向下取整 

    含义:

    用法: 

    floor函数用的头文件 

    floor函数基本用法

    冷知识:

    代码实现示例 :

    实战导入:

    算法分析:

    代码实现:

    输出结果:

    ​编辑Fourth·向上取整 

    含义:

    用法: 

    ceil函数用的头文件

    ceil函数基本用法

    代码实现示例 :

    实战导入 :

    算法分析: 

    代码实现 :

    输出结果:

    取整方式集合:

    小结 


    取整方式 

    取整方式总共可以分为4种:

    种数种类
    1.向0取整(trunc函数)
    2.四舍五入(round函数)
    3.向下取整(floor函数)
    4.向上取整(ceil函数)

    本文章就按照这个顺序依次展开说明,并用例题详细分析

    First·向0取整

    含义:

    向零取整即直接抹掉小数点后面的数字,取整数部分,C++默认的取整方式。(参考下面输出理解)

    用法:

    用法可以分为两种:

    1.将float数据类型直接转换为int类型,小数将直接采用向0取整的方式

    代码实现示例:

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. float a;
    6. int b;
    7. cin>>a;
    8. b=(int)a;
    9. cout<<"2.5的向下取整的数为"<
    10. return 0;
    11. }

     看输出结果,将2.5的小数部分0.5直接抹掉,转换为2输出,这就是C++默认的向0取整方式

    2.使用trunc函数实现向0取整

    trunc函数使用的头文件 

    #include

    trunc函数基本用法

    trunc(向0取整的数)//括号内可以添加变量进行运算

    代码实现示例 :

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. printf("2.5的向0取整的数为%.1lf\n",trunc(2.5));
    7. return 0;
    8. }

    看结果也是实现的向0取整,说明使用trunc函数也是可以实现向0取整的。

     Second·四舍五入

    含义:

    小数点后一位的数字>=0.1并且<=0.4的数抹掉小数所有位,小数点后一位的数字>=0.5并且<=0.9的数向上进一位(参考下面输出理解)

    用法: 

    使用round函数进行四舍五入运算

    round函数用的头文件

    #include

    round函数基本用法

    round(需要四舍五入的数)//括号内可以添加变量进行运算 

    代码实现示例:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. printf("2.444的四舍五入的数为%.1lf\n", round(2.444));
    7. printf("2.555的四舍五入的数为%.1lf\n", round(2.555));
    8. return 0;
    9. }

    看输出结果看到了整数2的小数部分<=4磨掉了小数所有位数;>=5的向上进一位

    Third·向下取整 

    含义:

    不判断小数位,正数抹掉小数位,负数向下退一位即为向下取整(参考下面的输出理解)

    用法: 

    使用floor函数进行向下取整运算

    floor函数用的头文件 

    #include

    floor函数基本用法

    floor(需要向下取整的数)//括号内可以添加变量进行运算 

    冷知识:

    总是忘记向下取整函数怎么拼写怎么办呢?相信很多英语学的很好的读者们已经发现了,向下取整函数(floor)放在英语里面就是——地板、地面的意思。所以啊,向下取整函数(floor)我们通常亲切的称他为——地板取整,是不是这下就好记多啦!😁

    代码实现示例 :

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. printf("2.9的向下取整的数为%.1lf\n", floor(2.9));
    7. printf("-2.5的向下取整的数为%.1lf\n", floor(-2.5));
    8. return 0;
    9. }

    看输出结果,可以明显的看到向下取整的效果了 ,那么来实战试试吧!

    实战导入:

    东北串王是家老店了,烧烤炒菜都很666666,尤其是夏天顾客络绎不绝,露天的位置都抢不到啊抢不到!最近店里遇到个问题:客人多,点的串也太多,服务员老是记错帐,搞得客人不开心。老板很着急,再这样下去就被传成“海捕大虾38元一只”的店啦!

    店里有个聪明的小伙计给出了个主意:串串子用不同的签子,一种签子一个价,最后数数总数就成啦!现在店里有三种签子:红柳签五元每串、铁签一块五每串、竹签五毛每串。你和朋友大吃大喝了一通,该结账啦!(讨价还价时老板说,多出的几毛钱可以免掉,真抠!)

    输入:

    三个整数t1,t2和t3,分别表示红柳签、铁签和竹签的数量。

    输出:

    一个整数,表示花的钱数。

    样例输入:

    10 10 11

    样例输出:

    70

    算法分析:

    多的几毛钱去掉,就是向下取整的一种方式,可以直接用向下取整实现。 

    代码实现:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. int rq,rqy;//定义红签数和红签计数,整数形式
    7. float tq,zq,sum;//定义铁签竹签数和计数变量,浮点形式
    8. cin>>rq>>tq>>zq;//输入
    9. rqy=rq*5;//计算红签钱数
    10. sum=tq*1.5+zq*0.5;//计算铁签竹签钱数,小数
    11. sum+=rqy;//把三个签子钱数相加求总和
    12. cout<<floor(sum);//题目要求免掉小数点后面的,就是向下取整
    13. return 0;
    14. }

    输出结果:


    Fourth·向上取整 

    含义:

    不判断小数位,正数向上进一位,负数向上进一位即为向上取整(参考下面的输出理解)

    用法: 

    使用ceil函数进行向上取整运算

    ceil函数用的头文件

    #include

    ceil函数基本用法

    ceil(需要向上取整的数)//括号内可以添加变量进行运算 

    代码实现示例 :

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. printf("2.1的向上取整的数为%.1lf\n", ceil(2.1));
    7. printf("-2.5的向上取整的数为%.1lf\n", ceil(-2.5));
    8. return 0;
    9. }

    看输出结果发现,他正好和向下取整反过来了,这就实现了向上取整,那就让我们实战试一下吧! 

    实战导入 :

    描述

    根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

    输入

    输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

    输出

    输出一行,包含一个整数,表示邮费。

    输入样例 1 

    800 n

    输出样例 1

    8

    算法分析: 

    这一个代码要运用的我们刚刚学习的向上取整,仔细读题,题目要求不足500克部分按500克计算,笨办法是用if一一列出来,妙的代码直接用向上取证代替多个if,简直香香。

    代码实现 :

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. int a,sum;
    7. char b;
    8. cin>>a>>b;
    9. if (a>1000)
    10. {
    11. sum=ceil(1.0*(a-1000)/500)*4+8;//运用向上取整计算
    12. }
    13. else
    14. {
    15. sum=8;
    16. }
    17. if (b=='y')
    18. {
    19. sum+=5;
    20. }
    21. //另一个if可以不用判断,因为不加急等同于原来的sum
    22. cout<
    23. return 0;
    24. }

    输出结果:

    这一篇文章就要结束了,在这里,作者给大家添加了,取整方式集合,供大家做好对比 

    取整方式集合:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. printf("2.5的向0取整的数为%.1lf\n", trunc(2.5));//向0取整
    7. printf("2.444的四舍五入的数为%.1lf\n", round(2.444));//四舍五入
    8. printf("2.555的四舍五入的数为%.1lf\n", round(2.555));
    9. printf("2.9的向下取整的数为%.1lf\n", floor(2.9));//向下取整
    10. printf("-2.5的向下取整的数为%.1lf\n", floor(-2.5));
    11. printf("2.1的向上取整的数为%.1lf\n", ceil(2.1));//向上取整
    12. printf("-2.5的向上取整的数为%.1lf\n", ceil(-2.5));
    13. return 0;
    14. }

    小结 

    这就是取整方式及实战讲解【全网最详细取整“集合”】,把知识点带入实战,如有疑问,请在评论区留言,作者看到后,会一一回复的。

  • 相关阅读:
    React实现一个拖拽排序组件 - 支持多行多列、支持TypeScript、支持Flip动画、可自定义拖拽区域
    【论文阅读】视频理解系列论文精读
    【Docker】联合探讨Docker:容器化技术的革命性应用
    在vue2中使用饼状图
    Elasticsearch GC优化实践
    面向对象及工程环境构建,220729,
    使用 Socks5 来劫持 HTTPS(TCP-TLS) 之旅
    java集合list map set
    PhantomReference 和 WeakReference 究竟有何不同
    【数据结构】时间复杂度和空间复杂度的计算
  • 原文地址:https://blog.csdn.net/djfihhfs/article/details/126520924