#include <iostream>
#include <sstream>
using namespace std;
main()
{
float input = FLT_MAX;
std::ostringstream buff;
buff.precision(39);
buff << input;
cout << buff.str();
}
Как преобразовать число с плавающей запятой или двойное в число в базе, отличное от десятичного? Я бы хотел express число в этих базах: 2; 4; 8; 16; 32; 64.
Но даже использования unsigned long long int недостаточно, поскольку он не может хранить числа с таким высоким показателем степени.
Есть идеи?
Редактировать: Я также хотел бы преобразовать DBL_MAX, так как я работаю над программой, которая должна находить и отображать ограничения основных типов данных c.
Этот код завершается ошибкой на второй итерации:
#include <iostream>
#include <math.h>
using namespace std;
main()
{
float input = FLT_MAX;
cout.precision(39);
while (floor(input) != 0)
{
cout << input << endl;
input /= 10;
}
}
Может кто-нибудь придумать другой способ, кроме использования арифметики произвольной точности?