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

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

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
原文地址:https://blog.csdn.net/2301_81354767/article/details/146384585
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/592667.html

相关文章:

  • LS-NET-001-什么是承载网,核心网和接入网
  • 面试总结之 Glide自定义的三级缓存策略
  • 小程序开发与物联网技术的结合:未来趋势
  • 网络编程(客户端间通信)
  • 【2025】基于python+django的小区物业管理系统(源码、万字文档、图文修改、调试答疑)
  • 深入解析 TouchSocket 插件系统架构与实践
  • k8s--集群内的pod调用集群外的服务
  • 穿越是时空之门(java)
  • 《深度学习》—— YOLOv1
  • 突破时空边界:Java实时流处理中窗口操作与时间语义的深度重构
  • 汇编移位指令
  • BERT系列模型
  • 解决下载npm 缓存出现的问题
  • JAVA并发-volatile底层原理
  • opencv初步学习——图像处理2
  • Day67 | 灵神 | 二分查找:统计公平数对的数目
  • SQLMesh系列教程:SQLMesh虚拟数据环境
  • 台式机电脑组装---电源
  • 【C++】STL(1) - 序列容器
  • Java设计模式之模板方法模式(Template Method Pattern)