Если я правильно понимаю плавающие точки IEEE, они не могут точно представить некоторые значения. Они точны в очень ограниченных случаях, и почти каждая операция с плавающей запятой увеличивает накопленные аппроксимации. Кроме того, еще один недостаток - «минимальный шаг» растет с показателем.Реализация с плавающей запятой IEEE, точность и накопление приближений
Не лучше ли предложить более конкретное представление?
Например, используйте 20 бит для «десятичной» части, но не для всех значений 2^20, а всего лишь 1000000, что дает полное 1/миллионное наименьшее возможное представление/разрешение и использует остальные 44 бита для целая часть, дающая довольно широкий диапазон. Таким образом, число «с плавающей запятой» может быть рассчитано с использованием целочисленной арифметики, которая может даже закончиться быстрее. А в случае умножения, сложения и вычитания нет накопления аппроксимаций, единственная возможная потеря - во время деления.
Эта концепция основана на том, что значения 2^n не являются оптимальными для представления десятичных чисел, например. 1 не делит это на 1024 части, но он довольно хорошо делит на 1000. Технически это не позволяет использовать полную точность, но я могу придумать множество случаев, когда LESS может быть БОЛЕЕ.
Естественно, что такой подход потеряет как диапазон, так и точность, но во всех случаях, когда конечности не требуются, такое представление кажется хорошей идеей.
SO не то, что нужно задавать этот вопрос! – Paddyd
Ваша система не может точно представить некоторые значения и точна в очень ограниченных случаях. Кроме того, умножение будет также * потерять точность. – usr2564301
IEEE - институт стандартизации, вы имеете в виду стандарт IEEE 754. И уже существует стандарт для десятичной точки с плавающей запятой: http://en.wikipedia.org/wiki/Decimal_floating_point –