一天一个计算机知识——【编程百度】向上取整


🎥个人简介
🌊🌉🌊心手合一,水到渠成


点击下面查看作者专栏 🏞️🏞️作者主页🏞️🏞️ 🔥🔥C语言专栏🔥🔥 🌊🌊编程百度🌊🌊 🌠🌠如何获取自己的代码仓库🌠🌠


索引与导读

💻数学中的概念

给定一个数值,寻找不小于该数值的最小整数

在数学中,向上取整通常用符号 ⌈ x ⌉ \lceil x \rceil ⌈x⌉ 表示

基本逻辑:不管小数部分是多少(只要大于0),整数部分都要加 1

如果本身就是整数,则保持不变。数学公式: ⌈ x ⌉ = min ⁡ { n ∈ Z ∣ n ≥ x } \lceil x \rceil = \min \{ n \in \mathbb{Z} \mid n \ge x \} ⌈x⌉=min{n∈Z∣n≥x}

输入值 ( x x x) 向上取整 ( ⌈ x ⌉ \lceil x \rceil ⌈x⌉) 向下取整 ( ⌊ x ⌋ \lfloor x \rfloor ⌊x⌋) 四舍五入 说明
3.1 4 3 3 只要有小数,就进位
3.9 4 3 4 同样进位
3.0 3 3 3 整数保持不变
-2.3 -2 -3 -2 注意负数:-2 大于 -2.3

关键点: 对于正数,向上取整是"向绝对值更大的方向"靠近;对于负数,它是"向绝对值更小的方向(即数轴右侧)"靠近


💻编程中的实现方式

A. 使用浮点数函数

大多数编程语言都提供了内置的数学库函数,通常命名为 ceil

  • Python:
py 复制代码
import math
result = math.ceil(3.2) # 结果是 4
  • C / C++:
    注意:ceil 返回的是 double 类型,通常需要转换回 int
cpp 复制代码
#include <cmath>
int result = (int)ceil(3.2);
  • Java:
java 复制代码
double result = Math.ceil(3.2); // 结果是 4.0

B. 整数运算技巧

如果你的输入是两个整数(被除数 a 和除数 b ),你想求 a / b a / b a/b 的向上取整结果,而不希望使用浮点数运算(因为浮点数慢且可能有精度问题),可以使用以下公式: Result = ( a + b − 1 ) / b \text{Result} = (a + b - 1) / b Result=(a+b−1)/b

原理分析(以整数除法为例):如果 a = 10 , b = 3 a = 10, b = 3 a=10,b=3: ( 10 + 3 − 1 ) / 3 = 12 / 3 = 4 (10 + 3 - 1) / 3 = 12 / 3 = 4 (10+3−1)/3=12/3=4(正确,10除3本来是3.33,向上取整为4)如果 a = 9 , b = 3 a = 9, b = 3 a=9,b=3: ( 9 + 3 − 1 ) / 3 = 11 / 3 = 3 (9 + 3 - 1) / 3 = 11 / 3 = 3 (9+3−1)/3=11/3=3(正确,整除时保持不变,因为整数除法是向下截断的)


💻向上取整的常见陷阱

  1. 数据类型返回: 在很多语言(如 C++, Java, Pythonmath.ceil)中,ceil 函数虽然计算整数,但返回值类型通常是 浮点型 (float/double) 。如果后续需要作为数组下标使用,必须显式转换为整型(int
  2. 负数处理: 在处理负数时,直觉容易出错。 − 3.5 -3.5 −3.5 向上取整是 − 3 -3 −3,而不是 − 4 -4 −4。如果你的业务逻辑对负数的处理要求不同(例如希望负数也按绝对值向上涨),则不能直接用 ceil

希望读者多多三连

给小编一些动力

蟹蟹啦!

相关推荐
troy128几秒前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
其实防守也摸鱼1 小时前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
寺中人1 小时前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
风合星语1 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
91刘仁德2 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
雨落在了我的手上2 小时前
Java数据结构(十四):Map和Set
数据结构
码行山野赴时序归途2 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(75):TiMem——用时间记忆树实现长期记忆的层级巩固
论文阅读·人工智能·学习·开源·github
库玛西2 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
别动我齐刘海2 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人