Модуль <cfloat> в стандартной библиотеке C++.
<cfloat>— это заголовочный файл в стандартной библиотеке C++, используемый для определения макросов и констант, связанных с числами с плавающей запятой. Эти макросы и константы предоставляют такую информацию, как точность и диапазон представления чисел с плавающей запятой, в основном из стандартной библиотеки C.<float.h>Заголовочный файл.
Основы чисел с плавающей запятой
В C++ число с плавающей запятой — это тип данных, используемый для представления десятичных дробей. C++ предоставляет два базовых типа с плавающей запятой:
float: число с плавающей запятой одинарной точности, обычно занимает 4 байта.double: число с плавающей запятой двойной точности, обычно занимает 8 байт.
Определение и синтаксис
В C++ можно использоватьfloatилиdoubleдля определения переменных с плавающей запятой. Например:
float f = 3.14f; // 使用 f 后缀表示浮点数字面量 double d = 2.718;
Операции с плавающей запятой в стандартной библиотеке
Хотя в стандартной библиотеке C++ нет выделенного модуля "cfloat",<cmath>заголовочный файл предоставляет множество функций для операций с плавающей запятой, таких как:
sqrtВычислить квадратный кореньpow: вычислить степеньsin、cos、tanВычислить тригонометрические функции
<cfloat>Предоставляемые константы
1. Диапазон чисел с плавающей запятой
FLT_MIN:floatНаименьшее положительное число данного типа.FLT_MAX:floatНаибольшее положительное число данного типа.DBL_MIN:doubleНаименьшее положительное число данного типа.DBL_MAX:doubleНаибольшее положительное число данного типа.LDBL_MIN:long doubleНаименьшее положительное число данного типа.LDBL_MAX:long doubleНаибольшее положительное число данного типа.
2. Точность чисел с плавающей запятой
FLT_DIG:floatКоличество значащих цифр данного типа.DBL_DIG:doubleКоличество значащих цифр данного типа.LDBL_DIG:long doubleКоличество значащих цифр данного типа.
3. Минимальная отрицательная экспонента
FLT_MIN_EXP:floatНаименьшая отрицательная экспонента данного типа.DBL_MIN_EXP:doubleНаименьшая отрицательная экспонента данного типа.LDBL_MIN_EXP:long doubleНаименьшая отрицательная экспонента данного типа.
4. Максимальная положительная экспонента
FLT_MAX_EXP:floatНаибольший положительный показатель экспоненты типа.DBL_MAX_EXP:doubleНаибольший положительный показатель экспоненты типа.LDBL_MAX_EXP:long doubleНаибольший положительный показатель экспоненты типа.
5. Машинный эпсилон
FLT_EPSILON:floatмашинный эпсилон типа, представляющий наименьшее число с плавающей запятой, которое можно отличить от 1.0 и которое больше 1.0.DBL_EPSILON:doubleМашинный эпсилон типа.LDBL_EPSILON:long doubleМашинный эпсилон типа.
Пример
Следующий пример демонстрирует, как использовать<cfloat>Предоставленные константы:
Пример
#include <cfloat>
int main() {
// вывод диапазона и точности типа float
std::cout << "float:\n";
std::cout << "Мин: " << FLT_MIN << '\n';
std::cout << "Макс: " << FLT_MAX << '\n';
std::cout << "Эпсилон: " << FLT_EPSILON << '\n';
std::cout << "Количество цифр: " << FLT_DIG << '\n';
// вывести диапазон и точность типа double
std::cout << "\ndouble:\n";
std::cout << "Минимум: " << DBL_MIN << '\n';
std::cout << "Максимум: " << DBL_MAX << '\n';
std::cout << "Эпсилон: " << DBL_EPSILON << '\n';
std::cout << "Количество цифр: " << DBL_DIG << '\n';
// вывести диапазон и точность типа long double
std::cout << "\nlong double:\n";
std::cout << "Минимум: " << LDBL_MIN << '\n';
std::cout << "Максимум: " << LDBL_MAX << '\n';
std::cout << "Эпсилон: " << LDBL_EPSILON << '\n';
std::cout << "Цифры: " << LDBL_DIG << '\n';
return 0;
}
Вывод:
float: Min: 1.17549e-38 Max: 3.40282e+38 Epsilon: 1.19209e-07 Digits: 6 double: Min: 2.22507e-308 Max: 1.79769e+308 Epsilon: 2.22045e-16 Digits: 15 long double: Min: 2.22507e-308 Max: 1.79769e+308 Epsilon: 2.22045e-16 Digits: 15
Ниже приведён пример использования<cmath>функции в заголовочном файле для работы с числами с плавающей запятой в программе на C++:
Пример
#include <cmath> // подключает математические функции
int main() {
double num = 9.0;
double root = sqrt(num); // вычислить квадратный корень
double power = pow(2.0, 3.0); // вычислить 2 в 3-й степени
std::cout << "Квадратный корень из " << num << " равен " << root << std::endl;
std::cout << "2 в 3-й степени равно " << power << std::endl;
return 0;
}
Вывод:
The square root of 9 is 3 The power of 2 to the 3 is 8
Примечания
- Точность чисел с плавающей запятой ограничена, поэтому при выполнении арифметических операций с плавающей запятой могут возникать проблемы с точностью.
- При сравнении двух чисел с плавающей запятой на равенство следует использовать небольшой допуск погрешности, а не напрямую использовать
==operator.
Хотя "cfloat" не является частью стандартной библиотеки C++, C++ предоставляет мощную поддержку чисел с плавающей запятой и связанные библиотеки математических функций. Используя<cmath>заголовочный файл, можно удобно выполнять различные операции с плавающей запятой. Надеюсь, эта статья поможет начинающим лучше понять операции с плавающей запятой в C++.