<typedeffloatmax_t
>обозначает тип с плавающей точкой, способный наиболее точно представлять любое значение любого типа с плавающей точкой в данной платформе.
Наибольшая ширина<typedef
>предусмотрена для всех платформ, но, конечно, размер может варьироваться.
Для обеспечения плавающей точкиКонстантынаиболее точно представлен для типа<floatmax_t
>, используйте макрос<BOOST_FLOATMAX_C
>.
Заменить константу<123.4567890123456789012345678901234567890
>на
BOOST_FLOATMAX_C(123.4567890123456789012345678901234567890)
Если, например,<floatmax_t
><float64_t
>, то результат будет эквивалентен<longdouble
>суффиксу с L, но если<floatmax_t
><float128_t
>, то результат будет эквивалентен<quad
type
>суффиксу с Q (при условии, конечно, что<float128_t
><__float128
>или<Quad
>поддерживается).
Если мы показываем с<max_digits10
>, максимальные, возможно, значительные десятичные цифры:
#ifdef BOOST_FLOAT32_C
std::cout.precision(boost::max_digits10<boost::float32_t>());
std::cout.setf(std::ios::showpoint);
std::cout << "BOOST_FLOAT32_C(123.4567890123456789012345678901234567890) = "
<< BOOST_FLOAT32_C(123.4567890123456789012345678901234567890) << std::endl;
#endif
Затем на 128-битной платформе (GCC 4.8.1 или выше с квадматом):
BOOST_FLOAT32_C(123.4567890123456789012345678901234567890) = 123.456787
BOOST_FLOAT64_C(123.4567890123456789012345678901234567890) = 123.45678901234568
BOOST_FLOAT80_C(123.4567890123456789012345678901234567890) = 123.456789012345678903
BOOST_FLOAT128_C(123.4567890123456789012345678901234567890) = 123.456789012345678901234567890123453