Поле digits
Поле digits класса numeric_limits возвращает
количество цифр в мантиссе для чисел с плавающей точкой
или количество битов (без учёта знакового бита) для
целочисленных типов, которые могут быть представлены
без потери точности. Для целых типов значение равно
количеству битов, доступных для хранения значения,
то есть sizeof(T) * CHAR_BIT - is_signed.
Для типов с плавающей точкой значение равно количеству
десятичных цифр в мантиссе.
Синтаксис
#include <limits>
numeric_limits<T>::digits
Пример
Давайте выведем значение поля digits для
нескольких фундаментальных типов:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "int: " << numeric_limits<int>::digits << endl;
cout << "unsigned int: " << numeric_limits<unsigned int>::digits << endl;
cout << "char: " << numeric_limits<char>::digits << endl;
cout << "float: " << numeric_limits<float>::digits << endl;
cout << "double: " << numeric_limits<double>::digits << endl;
return 0;
}
Результат выполнения кода:
"int: 31"
"unsigned int: 32"
"char: 7"
"float: 24"
"double: 53"
Пример
Давайте проверим, что для знакового и беззнакового
типов значение digits отличается на 1:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int diff = numeric_limits<unsigned int>::digits
- numeric_limits<int>::digits;
cout << "Difference: " << diff << endl;
return 0;
}
Результат выполнения кода:
"Difference: 1"
Смотрите также
-
класс
numeric_limits,
который предоставляет информацию о типах -
поле
min,
которое возвращает минимальное значение типа -
поле
max,
которое возвращает максимальное значение типа -
поле
epsilon,
которое возвращает машинную эпсилон