📜  C++中浮点数的精度(floor(),ceil(),trunc(),round()和setprecision())(1)

📅  最后修改于: 2023-12-03 14:59:50.099000             🧑  作者: Mango

C++中浮点数的精度

在C++中,浮点数是一种特殊的数据类型,可以存储小数。但是,由于计算机的存储浮点数的方式限制,会导致浮点数的精度问题。为了解决这个问题,C++提供了一些函数来处理浮点数的精度,包括 floor()ceil()trunc()round()setprecision()

floor()

floor() 函数可以将一个浮点数取下整,即将其舍入到小于或等于它的最大整数。它的原型如下:

double floor(double x);

示例代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x = 3.14;
    double y = floor(x);
    cout << y << endl; // 输出:3.0
    return 0;
}
ceil()

ceil() 函数可以将一个浮点数取上整,即将其舍入到大于或等于它的最小整数。它的原型如下:

double ceil(double x);

示例代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x = 3.14;
    double y = ceil(x);
    cout << y << endl; // 输出:4.0
    return 0;
}
trunc()

trunc() 函数可以将一个浮点数截断为整数部分,即取整数部分,舍去小数部分。它的原型如下:

double trunc(double x);

示例代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x = 3.14;
    double y = trunc(x);
    cout << y << endl; // 输出:3.0
    return 0;
}
round()

round() 函数可以将一个浮点数四舍五入为最接近的整数。如果与两个整数距离相等,则舍入到偶数。它的原型如下:

double round(double x);

示例代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x = 3.5;
    double y = round(x);
    cout << y << endl; // 输出:4.0
    return 0;
}
setprecision()

setprecision() 函数可以设置输出流的浮点数精度。它的原型如下:

#include <iomanip>

cout << setprecision(n) << x;

其中,n 表示要输出的小数位数,x 表示要输出的浮点数。示例代码:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double x = 3.14159265358979323846;
    cout << setprecision(4) << x << endl; // 输出:3.142
    cout << setprecision(8) << x << endl; // 输出:3.1415927
    return 0;
}
总结

本文介绍了在C++中处理浮点数精度的相关函数,包括 floor()ceil()trunc()round()setprecision()。在实际编程中使用这些函数可以避免浮点数精度损失导致的错误。