Для указания величин и размеров используйте тип данных Numeric. Численные значения содержать цифры от 0 до 9 и, необязательно, знак и десятичную точку. Visual FoxPro поддерживает шестнадцатиричные значения для данных типа numeric. Например, десятичное значение 255 может быть представлено как 0xFF.
![]() |
---|
Для точных финансовых расчетов вместо рассматриваемого типа данных используйте тип данных Currency. Вы можете преобразовывать значения из Numeric в Currency и обратно, используя функции NTOM( ) и MTON(). Для получения более подробной информации смотрите описания Тип данных Currency, Функция NTOM() и Функция MTON(). |
В полях с типом данных Numeric, длина десятичной порции определяется во время разработки, когда вы создаете поле. Длина десятичной части является частью общей длины. Например, если вы указали длину равную 6 для поля типа numeric а также установили количество десятичный мест равное 4, то поле может хранить значения до 9.9999.
Подробные спецификации о типе данных Numeric смотрите в описании Типы данных и полей Visual FoxPro.
Точность чисел
При хранении чисел с плавающей запятой в полях Numeric, точность числа в Visual FoxPro ограничена примерно 15 цифрами. Поэтому, точность более чем в 15 цифр может быть потеряна при преобразовании из численных в бинарные числа, хранение чисел с бесконечно повторяющимися десятичными значениями в бинарных, производит множество повторяемых операций, а хранение численных значений в полях Character и в переменных памяти осуществляется в бинарном формате.
Такое ограничение основано на способе, каким Pentium-процессоры подсчитывают и хранят числа с плавающей запятой и следует спецификациям Institute of Electrical and Electronics Engineers (IEEE) для управления числами с плавающей запятой в бинарном формате. Этот стандарт позволяет хранит числа с плавающей запятой в разумном количестве пространства и производит операции расчетов более быстро.
Например, дробь 1/10 может быть представлна, как десятичное значение 0.1. Однако, при хранении 1/10 в бинарном формате, десятичное значение не является тем же самым, что и дробь. Вместо этого, дробь представляет собой повторяющиеся бинарные 0001100110011100110011 и тому подобное. Такой тип числа не может быть представлен в памяти, которая конечна и ограничена; поэтому, десятичные числа округляются и хранятся в бинарном формате.
Для значений, требующих высокой точности используйте тип данных Double.
Для получения более подробной информации о том, как хранятся числа с плавающей запятой и как Pentium-процессоры обрабатывают расчеты с их использованием, посмотрите статью Microsoft Knowledge Base Article - Q78113, "XL: Floating-Point Arithmetic May Give Inaccurate Results" по адресу http://support.microsoft.com/default.aspx?scid=kb;en-us;Q78113.
Приведенный ниже пример иллюстрирует ограничение точности чисел для чисел с плавающей запятой в отношении типа данных Numeric:
![]() | |
---|---|
x=1234567890.0987654321 ? x |
Результат равен 1234567890.0987650000.