Звучит так, как будто вы спрашиваете о точности до десятичных знаков (цифры после десятичной точки), тогда как значащих цифр (общее количество цифр без начальных и начальных нулей)лучший способ описать точность чисел.
Вы правы в том, что число цифр после десятичной запятой будет меняться, когда число больше - но если мы говорим о точности, число значащих цифр не изменится, когда число будет больше.Тем не менее, ответ не прост для десятичных чисел:
Большинство систем в наши дни используют формат с плавающей точкой IEE для представления чисел в C. Однако, если вы на что-тонеобычно, стоит проверить.Числа IEE float
одинарной точности состоят из трех частей:
- Знаковый бит (это число положительное или отрицательное)
- (обычно такжеподпись) экспонента
- Дробь (число перед применением показателя)
Как и следовало ожидать, все это хранится в двоичном формате.
Сколько значащих цифр?
Если вы используете числа IEE-754, «сколько значащих цифр», вероятно, не простой способ думать об этом, потому что точность измеряется в двоичной значащейцифры, а не десятичные .float
s имеют только 23 бита точности для дробной части, но поскольку существует неявный начальный бит (если только дробная часть не является всеми нулями, что указывает на конечное значение 1), существует 24 эффективных бита точности.
Это означает, что есть 24 значащие двоичные цифры , что не переводит в точное число десятичных значащих цифр.Вы можете использовать формулу 24 * log (2) / log (10), чтобы определить, что есть 7,225 цифр десятичной точности, что не очень хороший ответ на ваш вопрос, поскольку есть числа из 24 значащих двоичных цифр, которые толькоиметь 6 значащих десятичных цифр.
Итак, числа с плавающей запятой одинарной точности имеют 6-9 значащих десятичных знаков точности , в зависимости от числа.
Интересно, что эту точность можно использовать и для работынаибольшее целое число подряд (считая от нуля), которое вы можете успешно представить в виде числа с плавающей запятой одинарной точностиЭто 2 ^ 24, или 16 777 216.Вы можете точно хранить большие целые числа, но только если они могут быть представлены в 24 значащих двоичных разрядах.
Дополнительные сведения: ограниченный размер компонента дроби - это то же самое, что вызывает это в Javascript:
> console.log(9999999999999999);
10000000000000000
Числа Javascript всегда представлены как числа с плавающей запятой двойной точности, которые имеют точность 53 бита.Это означает, что между 2 ^ 53 и 2 ^ 54 могут быть представлены только четные числа, поскольку последний бит любого нечетного числа теряется.