Все ли числа с одной точностью представимы в формате двойной точности?

учитывая произвольное число, представленное в формате IEEE-754 с одной точностью (обычно известный как float на некоторых языках / платформах) могу ли я быть уверен, что число может быть представлено точно в формате двойной точности?

Если это так, это свойство действует при рассмотрении половин-точности в число одинарной точности и двойной точности в четырехместный-точность?

2 ответов


да, double может представлять любое число, которое может float. Аналогично для quad-precision и т. д.

число с плавающей запятой представлено в виде 1.01b x 2^-1 (0.625, в данном случае). Важными компонентами число мантиссы, который представляет собой двоичное число с точкой радикса обычно сразу после первой цифры, и экспоненты.

единственное существенное различие между двоичными форматами с плавающей запятой - это количество битов для каждого деталь. Чем больше битов использует число, тем больше битов доступно для каждой части. Таким образом, 32-битный "float" может иметь 1.01000000000000000000000 для сигнификации, а (64-бит) "double" будет иметь около 50 цифр после точки. Это означает, что любое число, которое точно представлено в float, также точно представлено в double, поскольку у вас есть как повышенная точность (читай: более значительные цифры), так и увеличенный диапазон. Это похоже на то, как 64-разрядная целочисленная переменная может содержать любую 32-битное целое число; дополнительные биты просто в значительной степени не используются.

конечно, любые биты, которые были отрублены из-за ошибки округления, не вернутся в число, когда вы преобразуете его в double-то есть 0.3, который у вас есть в вашем поплавке, будучи неточным результатом, таким как 0.299999999875 или что-то еще (я не чувствую себя вычисляющим), не приблизится к 0.3, когда вы преобразуете его в double-он все равно будет 0.2999999875. Если вы хотите более близкого приближения, вам нужно повторите расчеты с удвоениями с самого начала.


да. На самом деле, вы можете сделать еще более сильное заявление: каждый продукт из двух чисел с одной точностью можно представить точно с двойной точностью (то же самое для половины и одного или двойного и quad).