СПОСОБЫ РАСПОЗНАВАНИЯ АНТИПАТТЕРНА
В сущности, любое применение типов данных FLOAT, REAL ИЛИ DOUBLE PRECISION вызывает подозрения. В большинстве приложений, использующих числа с плавающей запятой, не требуется диапазон значений, поддерживаемых форматом IEEE 754.
Применение типов данных FLOAT В SQL кажется естественным, так как название этого типа данных является общим для типов данных в большинстве языков программирования. Тем не менее существует лучший вариант выбора типа данных.
10.4. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ АНТИПАТТЕРНА
FLOAT — хороший тип данных, когда требуются значения действительных чисел с диапазоном, который шире диапазонов, поддерживаемых типами данных INTEGER или NUMERIC. Научные приложения часто цитируются как наилучшая область применения FLOAT.
В Oracle применение типа данных FLOAT означает точные масштабируемые числа, тогда как тип данных BINARYFLOAT является неточным числовым форматом, использующим кодирование IEEE 754.SELECT SUM( b.hours * a.hourly_rate ) AS project_cost FROM Bugs AS b
JOIN Accounts AS a ON (b.assigned_to = a.account_id);
Кумулятивное влияние неточных чисел с плавающей запятой еще более серьезно, когда рассчитывается совокупное произведение набора чисел вместо их суммы. Разница кажется маленькой, но она комбинируется. Например, если умножить значение 1 на коэффициент, точно равный 1,0, результат всегда будет равен 1. Не важно, сколько раз выполняется умножение на данный коэффициент. Однако если коэффициент на самом деле равен 0,999, то будет получаться другой результат. Если умножить значение, равное единице, на 0,999 последовательно тысячу раз, получится результат около 0,3677. Чем больше количество умножений, тем больше будет разница.
Хорошим примером применения многократного последовательного умножения служит вычисление сложного процента в финансовом приложении. При использовании неточных чисел с плавающей запятой вводится ошибка, которая кажется крошечной, но при комбинировании она возрастает. Поэтому использование точных значений в финансовых документах крайне важно! " °-<
Опубликовал vovan666
July 26 2013 08:07:41 ·
0 Комментариев ·
4014 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.