【C++】上下取整&&取整函数

这篇具有很好参考价值的文章主要介绍了【C++】上下取整&&取整函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

任意给出一个小数,编程求不小于它的最小整数与不大于它的最大整数。

即求出这个小数往下取整与往上取整的值。

输入描述:

输入一行,包含一个浮点数a

输出描述:

输出两行,第一行表示a往下取整,第二行表示a往上取整。

示例1

输入

3.5

输出

3

4

备注:ceil(x)函数返回大于等于x的最小double类型整数

例如:ceil(3.8)返回4.0

方法一:直接用强制类型转换运算符

#include<iostream>
using namespace std;
int main()
{
   double n;
   cin>>n;
   if((int)n==n)
      cout<<(int)n<<endl<<(int)n<<endl;
   else
   {  
      cout<<(int)n<<endl;
      cout<<(int)(n+1)<<endl;
   }
  return 0;
}

方法二:根据提示ceil函数用法+强制类型转换运算符

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double n;
    cin>>n;
    cout<<int(n)<<endl;
    cout<<ceil(n)<<endl;
    return 0;
 } 

方法三:函数取整·ceil函数、floor函数

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double num;
    cin>>num;
    int floor_num=floor(num);
    int ceil_num=ceil(num);
    cout<<floor(num)<<endl;
    cout<<ceil(num)<<endl;
    return 0;
}

【强制类型转换运算符解析】

(double)a ---> 将a转换成 double型

(int)(x+y) ---> 将x+y的值转换成 int型

(float)(5%3) ---> 将5%3的值转换成float型

其一般形式为:

(类型名)(表达式)

注意,表达式应该用括号括起来,如果写成

(int)x+y

则只将x转换成整型,然后与y相加。

需要说明的是,在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。例如:

a=(int)x

如果已定义x为float型变量,a为整型变量,进行强制类型运算(int)x后得到一个int 类型的临时值,它的值等于x的整数部分,把它赋给a,注意x的值和类型都未发生变化,仍为float型。该临时值在赋值之后就不再存在了。

【函数解析】

涉及函数:ceil函数、floor函数

补充相关函数:round函数

需另加的头文件:#include<math.h>

ceil函数在英文中,是天花板的意思,也有向上的意思。

所以,此函数是向上取整。它返回的是大于或等于函数参数,并且与之最接近的整数。

规律:

向上取整的时候,正数,则直接将当前整数+1;ceil(1.3)=2.0

负数,则取其整数部位,抹掉小数部位;ceil(-1.3)=-1.0

整数,则不变。ceil(1.0)=1.0

floor函数:在英文中,是地面地板的意思,也有下面的意思。

所以,此函数是向下取整。它返回的是小于或等于函数参数,并且与之最接近的整数。

规律:

向下取整的时候,正数,则取其整数部位,抹掉小数部位;floor(1.3)=1.0

负数,则取其整数部位+1;floor(-1.3)=-2.0

整数,则不变。floor(1.0)=1.0

round函数:在英文中,是有大约、环绕,在某某四周、附近的意思。

所以,该函数用于四舍五入

规律:

四舍五入的时候,正数,小数位大于5,则整数位+1;round(1.6)=2.0

小数位小于5,则整数位不变,抹掉小数位;round(1.3)=1.0

负数,小数位大于5,则整数位+1;round(-1.6)=-2.0

小数位小于5,则整数位不变,抹掉小数位;round(-1.3)=-1.0文章来源地址https://www.toymoban.com/news/detail-603525.html

到了这里,关于【C++】上下取整&&取整函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++的向上转型

    在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍

    2024年02月09日
    浏览(39)
  • C++ 多态向上转型详解

    【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 此篇博文详解C++的多态向上转型 平台 : Qt 【Q】什么是多态? 【A】解释如下 : 通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。在编程语言和类型论中,多态指

    2024年02月03日
    浏览(55)
  • 【Python数据结构与算法】——(线性结构)精选好题分享,不挂科必看系列

    🌈个人主页:  Aileen_0v0 🔥系列专栏:Python数据结构与算法专栏 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 1.time complexity of algorithm A is O(n^3) while algorithm B is O(2^n). Which of the following statement is TRUE?  A.For any problem in any scale, the alogorithm A is more efficient than alogrithm B. B.For any problem

    2024年02月05日
    浏览(45)
  • C++取整与保留小数位的问题与解决方法

    目录 一  保留小数位的方法; 1.1 printf 格式化输出: 1.2 setprecision用法;    1.2.0总述;    1.2.1基本格式setprecision(int n)    1.2.2 setiosflags(ios::fixed)    1.2.3 setiosflags(ios::scientific)  二  取整         2.1 强制类型转换          2.2取整函数;                 2.2.1四

    2024年02月05日
    浏览(36)
  • C++ 算法基础(1)——cmath常用函数

    头文件声明了一组用于计算常见数学运算和转换的函数: cos(x):计算余弦。 返回x弧度角的余弦值。 The cosine of 60.000000 degrees is 0.500000. sin(x):计算正弦。 返回x弧度角的正弦值。 The sine of 30.000000 degrees is 0.500000. tan(x):计算正切。 返回x弧度角的正切值。 The tangent of 45.000000 de

    2024年02月08日
    浏览(36)
  • 【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 accumulate 元素累加算法函数 用于 将 一个容器中的元素 进行累加操作 ; accumulate 元素累加函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 在一个基础值 的 基础上 进行累加 , 得到一个累加值

    2024年01月22日
    浏览(64)
  • 【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 merge 合并排序算法函数 用于 将 两个已排序好的容器 合并成一个新的已排序的容器 ; merge 合并排序算法 函数原型 如下 : 参数解析 : InputIterator1 first1 参数 : 有序 输入 容器 1 的 迭代器范围 的 起始迭代器 (

    2024年01月18日
    浏览(52)
  • 模拟赛好题分享

    @ 目录 山茶花 100pts T1区间逆序对 60pts 100pts 区间操作固定套路,转化为前缀操作 dream 20pts 神奇分块 杭州:转化题意,正难则反 正难则反(或者对于这种有删边操作的题), 我们看成反向加边 看题:构造 坐飞机:斜率优化DP 抓颓 : 启发式合并 + stl大杂烩 讨厌的线段树 Foo Fighters

    2024年02月05日
    浏览(58)
  • 【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 copy 元素复制算法函数 用于 将 一个容器中的元素 复制 到 另外一个 容器中 ; copy 元素赋值函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 复制 到输出序列中 , 从输出容器 的 指定开始位置

    2024年01月20日
    浏览(60)
  • 【C++】STL 算法 ⑤ ( 二元函数对象 | std::transform 算法简介 | 为 std::transform 算法传入一元函数对象进行转换操作 )

    \\\" 二元函数对象 \\\" 指的是 一个实例类 中 , 重载了 \\\" 函数调用操作符 () \\\" 函数 operator() , 并且该函数 接受 2 个参数 ; 如果 \\\" 重载 函数调用操作符 () 函数 \\\" 只接收一个参数 , 那么这个函数对象就是 一元函数对象 ; 下面的结构体类 函数对象 , 就是一个二元函数对象 , 其作用是将

    2024年01月18日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包