实时 C++ 中的浮点数学
1. 浮点算术
在实时 C++ 中,浮点算术可以得到有效应用。例如,下面的简单函数用于计算半径为 r
的圆的浮点面积,面积公式为 a = πr²
:
float area_of_a_circle(float r)
{
constexpr float pi = 3.14159265358979323846F;
return (pi * r) * r;
}
C++ 标准规定了三种内置浮点类型: float
、 double
和 long double
。标准并未对这些类型的内部表示细节进行规定。一般来说,标准仅要求 double
的精度至少与 float
相同, long double
的精度至少与 double
相同。编译器内部存储和处理浮点类型的方式由具体实现定义。
大多数优秀编译器的供应商会努力遵循 IEEE 754 - 2008 浮点标准。在该标准中,单精度(通常用 float
实现)要求宽度为 4 字节,提供 24 位二进制精度(约 7 位十进制精度);双精度(通常用 double
实现)必须为 8 字节宽,提供 53 位二进制精度(约 15 位十进制精度)。
有些微控制器使用浮点单元(FPU)