C++中如何使用floor、ceil和round函数保留两位小数

沈亦白
沈亦白
发布时间:2026-10-15 | 3人浏览过
原创

在 C++ 开发中,经常需要对浮点数进行精度处理以保留小数点后两位。本文将详细介绍如何使用 floor(向下取整)、ceil(向上取整)和 round(四舍五入)这三个数学函数来实现这一目标。核心逻辑是将数值乘以 100,应用取整函数,最后再除以 100。

核心原理:移位取整法

C++ 中的取整函数通常只针对整数部分或绝对值进行操作,无法直接指定小数位数。因此,实现“保留两位小数”的标准做法是:

  1. 放大倍数:将原数乘以 100,使需要保留的小数位变为整数部分。
  2. 执行取整:调用相应的取整函数处理放大后的数值。
  3. 还原倍数:将结果除以 100.0,恢复为原始数量级的浮点数。

常用取整函数解析与实现

第1步:使用 round 实现四舍五入

std::round() 是最常用的保留小数方式,它遵循标准的四舍五入规则。若某一位数字大于等于5则进位,否则舍去。

操作要点:对于正数和负数均生效,逻辑一致。

#include <iostream>
using namespace std;
int main()
{
    double i = 2.235687;
    // 核心公式:round(数值 * 100) / 100
    double j = round(i * 100) / 100;
    
    cout << "The original number is " << i << endl;
    cout << "The keep two decimal of 2.235687 is " << j << endl;
    system("pause");
    return 0;
}

运行结果如下:

第2步:使用 floor 实现强制向下取整

std::floor() 返回小于或等于参数的最大整数。在保留小数场景中,它会忽略后续所有位数,永远向零的反方向(绝对值更大方向,但对于正数即变小)截断。

注意:对于负数,-2.23 向下取整会变成 -3.00(放大后),这点在使用时需要特别注意业务逻辑是否允许。

#include <iostream>
using namespace std;
int main()
{
    // 演示对原始数值直接 floor 的效果(未乘以100前)
    double i = floor(2.2);
    double j = floor(-2.2);
    
    cout << "The floor of 2.2 is " << i << endl;
    cout << "The floor of -2.2 is " << j << endl;
    system("pause");
    return 0;
}

运行结果如下:

若要实现保留两位的向下取整,代码应写为:floor(x * 100) / 100。

第3步:使用 ceil 实现强制向上取整

std::ceil() 返回大于或等于参数的最小整数。只要小数部分存在,就会进位。

适用场景:常用于需要满足最低精度要求或安全冗余的场景。

#include <iostream>
using namespace std;
int main()
{
    // 演示对原始数值直接 ceil 的效果
    double i = ceil(2.2);
    double j = ceil(-2.2);
    
    cout << "The ceil of 2.2 is " << i << endl;
    cout << "The ceil of -2.2 is " << j << endl;
    system("pause");
    return 0;
}

运行结果如下:

同样,若要实现保留两位的向上取整,代码应写为:ceil(x * 100) / 100。

第4步:round 函数的完整行为验证

round() 在处理边界情况(如 .5)时表现稳定。以下代码展示了正负数在不同末尾数字下的表现。

#include <iostream>
using namespace std;
int main()
{
    double i = round(2.2);   // 结果为 2
    double x = round(2.7);   // 结果为 3
    double j = round(-2.2);  // 结果为 -2
    double y = round(-2.7);  // 结果为 -3
    
    cout << "The round of 2.2 is " << i << endl;
    cout << "The round of 2.7 is " << x << endl;
    cout << "The round of -2.2 is " << j << endl;
    cout << "The round of -2.7 is " << y << endl;
    system("pause");
    return 0;
}

运行结果如下:

总结

在 C++ 中保留两位小数,最通用的方法是组合使用算术运算符与 <cmath> 头文件中的取整函数。选择哪种函数取决于你的业务需求:需要标准的四舍五入选 round,需要保守估计(向下)选 floor,需要充足预估(向上)选 ceil。记得始终遵循“乘100取整除100”的顺序以保持精度逻辑正确。

以上就是C++使用floor、ceil、round保留小数点后两位的详细内容,更多关于C++ floor ceil round的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表