Модуль <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 <iostream>
#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 <iostream>
#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++.

Другие расширения