я решил проблему посещения http://www.spoj.com/problems/CHI_ROOT/максимальное число битов допускается после десятичной точки в длинных двойной в C++
(найти п-й корень из числа и напечатать первые 101 значащие цифры результата , без десятичной точки, конечные и ведущие нули) с использованием long double
.
sizeof(long double)=12;
, следовательно, не общее количество битов, выделенных для long double
переменной составляет 96 бит (12 * 8).
Максимальное значение, которое может хранить переменная, составляет приблизительно 10^28.
Я хочу знать, сколько максимальных цифр может хранить переменная после десятичной точки и как она хранится?
Номера с плавающей запятой в большинстве систем представлены форматом с плавающей запятой [IEEE] (https://en.wikipedia.org/wiki/IEEE_floating_point). –
80 бит, а не 96, 64 из них хранят мантиссу. Поэтому он может представлять значения pow (2, 64) = 1,8E19. Поэтому не более 19 значащих десятичных цифр. Вы быстро потеряете его при выполнении любой математики по значению, просто перейдя от десятичной к двоичной, скажем, умножить и преобразовать обратно в десятичную, так как значение нужно округлять три раза. Поэтому используйте 18 как практическое значение. –