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

2025年3月21日 | 阅读 4 分钟

在 C++ 中,浮点数由 float、double 和 long double 数据类型表示,用于近似带有小数点的实数。float 类型通常使用 32 位,double 使用 64 位,而 long double 可能使用 64、80 或更多位,具体取决于平台。

C++ 语言将提供来自 <iomanip>"set precision" 操作符,用于输出格式化。在将浮点值打印到控制台或文件时,它控制小数点后显示的位数。在对数值精度要求极高的应用程序中,开发人员可能会探索替代方法,例如使用定点算术或专门的数值库。

Floor() 函数

C++ 中的 floor() 函数 返回小于或等于给定浮点数的最大整数。

语法

它具有以下语法:

示例

让我们用一个 C++ 程序来演示 floor() 函数。

输出

Precision of Floating Point Numbers in C++ (floor(), ceil(), trunc(), round() and setprecision())

说明

该程序使用 <cmath> 库中的 floor() 函数来查找小于或等于给定浮点数 8.75 的最大整数。结果显示为 "Floor value",是 8,展示了该函数如何截断小数部分,提供最接近负无穷大的整数。

Ceil() 函数

C++ 中的 ceil() 函数 返回大于或等于给定浮点数的最小整数。

语法

它具有以下语法:

示例

让我们用一个程序来演示 C++ 中的 ceil() 函数

输出

Precision of Floating Point Numbers in C++ (floor(), ceil(), trunc(), round() and setprecision())

说明

该程序利用 <cmath> 库中的 ceil() 函数来查找大于或等于给定浮点数 8.75 的最小整数。结果显示为 "ceil value",是 9,展示了该函数如何将数字向上舍入到最接近的整数。

Trunc() 函数

C++ 中的 Trunc() 函数 通过向零截断来返回给定浮点数的整数部分。

语法

它具有以下语法:

示例

让我们用一个程序来演示 C++ 中的 trunc() 函数。

输出

Precision of Floating Point Numbers in C++ (floor(), ceil(), trunc(), round() and setprecision())

Round() 函数

Round() 函数将给定浮点数四舍五入到最接近的整数。

语法

它具有以下语法:

示例

让我们用一个程序来演示 C++ 中的 round() 函数

输出

Precision of Floating Point Numbers in C++ (floor(), ceil(), trunc(), round() and setprecision())

Setprecision() 操作符

C++ 中的 setprecision() 操作符在输出浮点数时设置小数点后显示的位数。

语法

它具有以下语法:

示例

让我们用一个程序来演示 C++ 中的 setprecision() 函数。

输出

Precision of Floating Point Numbers in C++ (floor(), ceil(), trunc(), round() and setprecision())

说明

该程序计算三个考试成绩的平均值,并演示了使用 <iomanip> 中的 set precision 进行精度控制。它首先显示原始平均值,然后将精度设置为 2 和 4 位小数,展示了操作符如何控制小数点后的位数。最后,精度重置为默认值。

结论

在 C++ 中,float 和 double 等浮点数以不同的精度表示实数。来自 <iomanip>setprecision() 操作符允许在输出这些数字时控制小数位数。像 floor()、ceil()、trunc()round() 这样的函数通过舍入或截断浮点值来帮助管理精度。尽管有这些工具,开发人员必须意识到固有的近似值,并考虑在数值精度至关重要的关键应用程序中使用定点算术等替代方法。理解和解决精度问题对于健壮的 C++ 编程至关重要。