作者:Yu仙笙真滴卷😎
专栏:C++知识精讲🏀
文章简介:
本文我们来讲C++知识精讲的第13篇,取整方式及实战讲解,此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持。接下来,进入今天的知识精讲。
强烈建议点赞收藏起来,干货太多,以免以后找不到!😘
真的全网最详细!!!😎
这是作者的得意之作,啊哈哈哈🤣
目录
取整方式
取整方式总共可以分为4种:
种数 | 种类 |
---|---|
1. | 向0取整(trunc函数) |
2. | 四舍五入(round函数) |
3. | 向下取整(floor函数) |
4. | 向上取整(ceil函数) |
本文章就按照这个顺序依次展开说明,并用例题详细分析
First·向0取整
含义:
向零取整即直接抹掉小数点后面的数字,取整数部分,C++默认的取整方式。(参考下面输出理解)
用法:
用法可以分为两种:
1.将float数据类型直接转换为int类型,小数将直接采用向0取整的方式
代码实现示例:
#include<iostream>
using namespace std;
int main()
{
float a;
int b;
cin>>a;
b=(int)a;
cout<<"2.5的向下取整的数为"<<b;
return 0;
}
看输出结果,将2.5的小数部分0.5直接抹掉,转换为2输出,这就是C++默认的向0取整方式
2.使用trunc函数实现向0取整
trunc函数使用的头文件
#include<cmath>
trunc函数基本用法
trunc(向0取整的数)//括号内可以添加变量进行运算
代码实现示例 :
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
printf("2.5的向0取整的数为%.1lf\n",trunc(2.5));
return 0;
}
看结果也是实现的向0取整,说明使用trunc函数也是可以实现向0取整的。
Second·四舍五入
含义:
小数点后一位的数字>=0.1并且<=0.4的数抹掉小数所有位,小数点后一位的数字>=0.5并且<=0.9的数向上进一位(参考下面输出理解)
用法:
使用round函数进行四舍五入运算
round函数用的头文件
#include<cmath>
round函数基本用法
round(需要四舍五入的数)//括号内可以添加变量进行运算
代码实现示例:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
printf("2.444的四舍五入的数为%.1lf\n", round(2.444));
printf("2.555的四舍五入的数为%.1lf\n", round(2.555));
return 0;
}
看输出结果看到了整数2的小数部分<=4磨掉了小数所有位数;>=5的向上进一位
Third·向下取整
含义:
不判断小数位,正数抹掉小数位,负数向下退一位即为向下取整(参考下面的输出理解)
用法:
使用floor函数进行向下取整运算
floor函数用的头文件
#include<cmath>
floor函数基本用法
floor(需要向下取整的数)//括号内可以添加变量进行运算
冷知识:
总是忘记向下取整函数怎么拼写怎么办呢?相信很多英语学的很好的读者们已经发现了,向下取整函数(floor)放在英语里面就是——地板、地面的意思。所以啊,向下取整函数(floor)我们通常亲切的称他为——地板取整,是不是这下就好记多啦!😁
代码实现示例 :
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
printf("2.9的向下取整的数为%.1lf\n", floor(2.9));
printf("-2.5的向下取整的数为%.1lf\n", floor(-2.5));
return 0;
}
看输出结果,可以明显的看到向下取整的效果了 ,那么来实战试试吧!
实战导入:
东北串王是家老店了,烧烤炒菜都很666666,尤其是夏天顾客络绎不绝,露天的位置都抢不到啊抢不到!最近店里遇到个问题:客人多,点的串也太多,服务员老是记错帐,搞得客人不开心。老板很着急,再这样下去就被传成“海捕大虾38元一只”的店啦!
店里有个聪明的小伙计给出了个主意:串串子用不同的签子,一种签子一个价,最后数数总数就成啦!现在店里有三种签子:红柳签五元每串、铁签一块五每串、竹签五毛每串。你和朋友大吃大喝了一通,该结账啦!(讨价还价时老板说,多出的几毛钱可以免掉,真抠!)
输入:
三个整数t1,t2和t3,分别表示红柳签、铁签和竹签的数量。
输出:
一个整数,表示花的钱数。
样例输入:
10 10 11
样例输出:
70
算法分析:
多的几毛钱去掉,就是向下取整的一种方式,可以直接用向下取整实现。
代码实现:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int rq,rqy;//定义红签数和红签计数,整数形式
float tq,zq,sum;//定义铁签竹签数和计数变量,浮点形式
cin>>rq>>tq>>zq;//输入
rqy=rq*5;//计算红签钱数
sum=tq*1.5+zq*0.5;//计算铁签竹签钱数,小数
sum+=rqy;//把三个签子钱数相加求总和
cout<<floor(sum);//题目要求免掉小数点后面的,就是向下取整
return 0;
}
输出结果:
Fourth·向上取整
含义:
不判断小数位,正数向上进一位,负数向上进一位即为向上取整(参考下面的输出理解)
用法:
使用ceil函数进行向上取整运算
ceil函数用的头文件
#include<cmath>
ceil函数基本用法
ceil(需要向上取整的数)//括号内可以添加变量进行运算
代码实现示例 :
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
printf("2.1的向上取整的数为%.1lf\n", ceil(2.1));
printf("-2.5的向上取整的数为%.1lf\n", ceil(-2.5));
return 0;
}
看输出结果发现,他正好和向下取整反过来了,这就实现了向上取整,那就让我们实战试一下吧!
实战导入 :
描述
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。
输入
输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出
输出一行,包含一个整数,表示邮费。
输入样例 1
800 n
输出样例 1
8
算法分析:
这一个代码要运用的我们刚刚学习的向上取整,仔细读题,题目要求不足500克部分按500克计算,笨办法是用if一一列出来,妙的代码直接用向上取证代替多个if,简直香香。
代码实现 :
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,sum;
char b;
cin>>a>>b;
if (a>1000)
{
sum=ceil(1.0*(a-1000)/500)*4+8;//运用向上取整计算
}
else
{
sum=8;
}
if (b=='y')
{
sum+=5;
}
//另一个if可以不用判断,因为不加急等同于原来的sum
cout<<sum;
return 0;
}
输出结果:
这一篇文章就要结束了,在这里,作者给大家添加了,取整方式集合,供大家做好对比
取整方式集合:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
printf("2.5的向0取整的数为%.1lf\n", trunc(2.5));//向0取整
printf("2.444的四舍五入的数为%.1lf\n", round(2.444));//四舍五入
printf("2.555的四舍五入的数为%.1lf\n", round(2.555));
printf("2.9的向下取整的数为%.1lf\n", floor(2.9));//向下取整
printf("-2.5的向下取整的数为%.1lf\n", floor(-2.5));
printf("2.1的向上取整的数为%.1lf\n", ceil(2.1));//向上取整
printf("-2.5的向上取整的数为%.1lf\n", ceil(-2.5));
return 0;
}
小结
这就是取整方式及实战讲解【全网最详细取整“集合”】,把知识点带入实战,如有疑问,请在评论区留言,作者看到后,会一一回复的。