needDrivers wrote:
> Не могли бы дать хорошие примеры или советы по работе с фиксированной
> точкой?
Ну, какие тут могут быть советы ...
Используй -- вот главный совет.
Отличай случаи, когда надо использовать, от случаев, когда не надо
(редко, и в основном -- статистические расчёты). Ну т.е. надо прежде
всего решить, какой тип арифметики использовать: точную или плавающую.
Если точная арифметика -- надо чётко понимать, как при вычислении
выражений округлять результаты, и в каком месте. Постановщики задач
часто об этом не думают, надо из них это вытрясать.
Если не будешь округлять, можно получить переполнение достаточно быстро.
Правило вычисления точности результата:
N1.M1 * N2.M2 = N1+N2.M1+M2 (если не ошибаюсь),
где
N1, N2 -- кол-во цифр до дес. точки,
M1, M2 -- кол-во цифр после дес. точки.
> Какой тип данных использовать для хранения чисел с фиксированной точкой
На клиенте СУБД нужно использовать либо типы данных, предоставляемые
клиентской библиотекой СУБД, если такие есть, либо какие-то универсальные
типы данных, предоставляемые языком, или библиотекой, или ещё чем-то
(как напр. currency в VB). Ну, или использовать библиотеки длинных
точных чисел, типа Gnu MP.
Posted via RSDN NNTP Server 2.1 beta