Числа с фиксированной запятой и числа с плавающей запятой - PullRequest
0 голосов
/ 23 мая 2011

Каковы различные преимущества / недостатки компьютерной архитектуры чисел с фиксированной и плавающей запятой? Я могу понять, что оба приводят к неточностям.

Мои другие вопросы

  1. Как возникают эти неточности?

  2. Одна форма лучше другой?

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

С Руководство по числам с плавающей запятой :

Зачем нужны числа с плавающей запятой

Поскольку память компьютера ограничена,Вы не можете хранить числа с бесконечной точностью, независимо от того, используете ли вы двоичные или десятичные дроби: в какой-то момент вам придется отсечь.Но сколько точности нужно?И где это нужно?Сколько целых чисел и сколько дробных цифр?

  • Для инженера, строящего шоссе, не имеет значения, 10 метров или 10,0001 метра в ширину - его измерения, вероятно, не настолько точны с самого начала.,
  • Для человека, разрабатывающего микрочип, 0,0001 метра (десятая часть миллиметра) - огромная разница - но ему никогда не придется иметь дело с расстоянием, превышающим 0,1 метра.
  • Физику необходимо использовать скорость света (около 300000000) и гравитационную постоянную Ньютона (около 0,0000000000667) вместе в одном расчете.

Чтобы удовлетворить инженера и разработчика чипачисловой формат должен обеспечивать точность чисел с очень разными значениями.Однако необходима только относительная точность.Чтобы удовлетворить физика, должна быть возможность делать вычисления, которые включают числа с различными величинами.

По существу, иметь фиксированное число целых и дробных цифр бесполезно - и решением является формат с плавающей запятой.

Что касается других ваших вопросов:

  1. Все неточности возникают именно по одной причине: вы пытаетесь разместить бесконечное количество данных (таких как все рациональныеномера) в ограниченном пространстве (например, 64 бита).Единственное, что отличается между форматами, это то, как правильно распределены числа, которые могут быть представлены.
  2. Форматы с плавающей точкой лучше, точка.У них нет многих ограничений формантов с фиксированной точкой, хотя у них все еще есть много ограничений (в значительной степени у всех форматов с фиксированной точкой также ).

Это, как говоритсяпроблема с плавающей запятой и с фиксированной запятой часто путается с двоичной и десятичной - в частности, люди часто сравнивают двоичные форматы с плавающей запятой с (неявно) десятичными форматами с фиксированной запятой.Неспособность точно представлять десятичные дроби - это то, что удивляет большинство людей, и поэтому они считают это большим недостатком «форматов с плавающей запятой», когда на самом деле это недостаток двоичных форматов, и они вовсе не удивлены неспособностьюдля точного представления чисел, таких как 1/3

0 голосов
/ 23 мая 2011

Вы не указали, какой язык программирования вы используете, однако большинство языков программирования не имеют встроенного типа с фиксированной точкой.

Языки основного потока, такие как C и C ++, имеют целочисленные типы и числа с плавающей точкой.типы.Если вы намереваетесь использовать что-то вроде типа с фиксированной запятой, скажем, с четырьмя десятичными знаками, вам придется реализовать это поверх существующих целочисленных типов.В качестве альтернативы, используйте существующую библиотеку.

Когда речь идет о вопросе, который лучше, ответ «это зависит».Вещи, которые вы должны рассмотреть:

  • Какое оборудование вы собираетесь использовать?Большинство современных хост-компьютеров (ПК) имеют выделенное аппаратное обеспечение с плавающей запятой, а также встроенные системы высокого класса.Однако при использовании встроенной системы низкого уровня это не так, поэтому она должна реализовывать операции с плавающей запятой в терминах существующих инструкций ассемблера.

  • Какова природа вашего приложения?Работает ли это естественно, скажем, с четырьмя десятичными знаками?Что произойдет, если вы получите ошибку округления младшего значащего бита и т. Д.

...