当前位置: 首页 > news >正文

上取整,下取整,四舍五入

1. 上取整(Ceiling)

上取整是指将一个数向上舍入到最接近的整数。

方法:
  • 使用 <cmath> 库中的 std::ceil 函数。

示例代码:
#include <iostream>
#include <cmath> // 包含 std::ceil

int main() {
    double num = 3.14;
    double result = std::ceil(num); // 上取整
    std::cout << "Ceiling of " << num << " is: " << result << std::endl; // 输出 4
    return 0;
}

2. 下取整(Floor)

下取整是指将一个数向下舍入到最接近的整数。

方法:
  • 使用 <cmath> 库中的 std::floor 函数。

示例代码:
#include <iostream>
#include <cmath> // 包含 std::floor

int main() {
    double num = 3.14;
    double result = std::floor(num); // 下取整
    std::cout << "Floor of " << num << " is: " << result << std::endl; // 输出 3
    return 0;
}

3. 四舍五入(Rounding)

四舍五入是指将一个数舍入到最接近的整数。

方法:
  • 使用 <cmath> 库中的 std::round 函数。

示例代码:
#include <iostream>
#include <cmath> // 包含 std::round

int main() {
    double num = 3.14;
    double result = std::round(num); // 四舍五入
    std::cout << "Rounded value of " << num << " is: " << result << std::endl; // 输出 3
    return 0;
}

4. 使用整数运算

如果你只需要对整数进行四舍五入,可以使用整数运算。

#include <iostream>

int main() {
    double num = 3.6;
    int rounded = static_cast<int>(num + 0.5);
    std::cout << "Rounded value: " << rounded << std::endl;  // 输出 4

5. 自定义四舍五入到指定小数位

如果需要将浮点数四舍五入到指定的小数位数,可以使用以下方法:

方法:
  1. 将数乘以 (n 是保留的小数位数)。

  2. 使用 std::round 四舍五入。

  3. 将结果除以 

示例代码:
#include <iostream>
#include <cmath> // 包含 std::round

double roundToDecimal(double num, int decimalPlaces) {
    double factor = std::pow(10, decimalPlaces);
    return std::round(num * factor) / factor;
}

int main() {
    double num = 3.14159;
    double result = roundToDecimal(num, 2); // 四舍五入到 2 位小数
    std::cout << "Rounded value of " << num << " is: " << result << std::endl; // 输出 3.14
    return 0;
}

6. 强制类型转换实现下取整

如果不需要使用 <cmath> 库,可以通过强制类型转换实现下取整。

方法:
  • 将浮点数强制转换为整数类型(如 int)。

示例代码:
#include <iostream>

int main() {
    double num = 3.14;
    int result = static_cast<int>(num); // 强制类型转换实现下取整
    std::cout << "Floor of " << num << " is: " << result << std::endl; // 输出 3
    return 0;
}

7. 上取整的替代方法

如果不想使用 std::ceil,可以通过以下方法实现上取整:

方法:
  • 如果数是整数,直接返回;否则,返回整数部分加 1。

示例代码:
#include <iostream>

int customCeil(double num) {
    int intPart = static_cast<int>(num);
    if (num == intPart) {
        return intPart;
    } else {
        return intPart + 1;
    }
}

int main() {
    double num = 3.14;
    int result = customCeil(num); // 自定义上取整
    std::cout << "Ceiling of " << num << " is: " << result << std::endl; // 输出 4
    return 0;
}

总结

操作方法示例代码
上取整std::ceilstd::ceil(3.14) → 4
下取整std::floorstd::floor(3.14) → 3
四舍五入std::roundstd::round(3.14) → 3
自定义小数位四舍五入乘 10n10n 后 std::roundroundToDecimal(3.14159, 2) → 3.14
强制类型转换下取整static_cast<int>static_cast<int>(3.14) → 3
自定义上取整判断小数部分并加 1customCeil(3.14) → 4

相关文章:

  • IC/ID卡的卡号的不同格式的转换
  • created在vue3 script setup中的写法
  • redis搭建一主一从+keepalived(虚拟IP)实现高可用
  • 【8】分块学习笔记
  • 修改War包文件
  • PTA C语言程序设计 第三章
  • linux Redhat9.5采用DNS主从实现跨网段解析
  • 批量删除 PPT 中的所有图片、某张指定图片或者所有二维码图片
  • 【Java】——方法的使用(从入门到进阶)
  • deepseek使用记录99——为何追问
  • nginx 配置ip黑白名单
  • Docker 内部通信(网络)
  • 基于MySQL的创建<resultMap>和查询条件<if test>
  • zookeepernacoskafka之间的联系
  • Linux系统上后门程序的原理细节,请仔细解释一下
  • 【GeeRPC】项目总结:使用 Golang 实现 RPC 框架
  • PostgreSQL:语言基础与数据库操作
  • Cloudlog系统接口 search_log未授权存在SQL注入漏洞代码审计(DVB-2025-8964)
  • 大数据 ETL 异常值缺失值处理完整方案
  • 美团-测开
  • 中拉论坛第四届部长级会议将举行,外交部介绍情况
  • 印巴开始互袭军事目标,专家:冲突“螺旋式升级”后果或不可控
  • 邯郸一酒店办婚宴发生火灾,新郎母亲:饭没吃成酒店还要收费
  • 上财发布“AI+课程体系”,人工智能如何赋能财经教育?
  • 王受文已任全国工商联党组成员
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式