Для получения максимального и минимального значения мы запросим их через
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