Для получения максимального и минимального значения мы запросим их через
std::numeric_limits — которая обеспечивает стандартизированный способ запроса различных свойств арифметических типов. К таким данным можно отнести:
numeric_limits<bool>
numeric_limits<signed char>
numeric_limits<unsigned char>
numeric_limits<wchar_t>
numeric_limits<char16_t>
numeric_limits<char32_t>
numeric_limits<short>
numeric_limits<unsigned short>
numeric_limits<int>
numeric_limits<unsigned int>
numeric_limits<long>
numeric_limits<unsigned long>
numeric_limits<long long>
numeric_limits<unsigned long long>
numeric_limits<float>
numeric_limits<double>
numeric_limits<qint64>
numeric_limits<quint64>
numeric_limits<qint8>
numeric_limits<qint16>
numeric_limits<qint32>
Получаем следующий вывод через qDebug:
9223372036854775807 qint64
-9223372036854775808 qint64
18446744073709551615 quint64
0 quint64
127 qint8
-128 qint8
32767 qint16
-32768 qint16
2147483647 qint32
-2147483648 qint32
true bool
false bool
127 signed char
-128 signed char
255 unsigned char
0 unsigned char
65535 wchar_t
0 wchar_t
'\uffff' char16_t
'\x0' char16_t
'\Uffffffff' char32_t
'\x0' char32_t
32767 short
-32768 short
65535 unsigned short
0 unsigned short
2147483647 int
-2147483648 int
4294967295 unsigned int
0 unsigned int
2147483647 long
-2147483648 long
4294967295 unsigned long
0 unsigned long
9223372036854775807 long long
-9223372036854775808 long long
18446744073709551615 unsigned long long
0 unsigned long long
3.40282e+38 float
1.17549e-38 float
1.79769e+308 double
2.22507e-308 double
Как видим переменные типа float и double не совсем читабельно вывелись. Внесем изменения.
qDebug() << QString::number(std::numeric_limits<float>::max(),'f',38)
<< " float";
qDebug() << QString::number(std::numeric_limits<float>::min(),'f',38)
<< " float";
qDebug() << QString::number(std::numeric_limits<double>::max(),'f',308)
<< " double";
qDebug() << QString::number(std::numeric_limits<double>::min(),'f',308)
<< " double";
// И получим следующий вывод
"340282346638528859811704183484516925440.00000000000000000000000000000
000000000" float
"0.00000000000000000000000000000000000001" float
"179769313486231570814527423731704356798070567525844996598917476803157
2607800285387605895586327668781715404589535143824642343213268894641827
6846754670353751698604991057655128207624549009038932894407586850845513
3942304583236903222948165808559332123348274797826204144723168738177180
919299881250404026184124858368.000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000" double
"0.0000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000002" double