Даааа, ну чтожжжжж..... Раз уж мы тут "тааакие все проограммииисты", взглянем на это дело как программисты.
Для начала приношу свои извинения по поводу сказанного мной, что dbf хранит числовые данные в Double. Конечно-же
ещё и в Integer, и в Float и т.д... но, вот тип Numeric, (кстати, в переводе с английского - числовой) насколько я понимаю, является лишь указанием на то что в данном поле хранятся числовые значения (кстати, в FoxPro под хранение числа Numeric выделяют столько же памяти сколько и под Double - 8 байт). Кроме того, тип Numeric в FoxPro не является типом данных
полей таблиц,
он просто является типом данных(
http://vfp.narod.ru/Vfp/help/fox01230.htm ).
Теперь исследуем ту таблицу, которые мы создавали в AV. Ради эксперимента можете создать таблицу в которой есть числовые поля с различным количеством знаков после запятой. Теперь откроем данную таблицу в MSAccess (к сожалению не имею инсталляции FoxPro) в режиме конструктора таблиц и смотрим -
ВСЕ числовые поля имеют тип ЧИСЛОВОЙ (он же Numeric), а вот размер у полей, которые имеют хотя бы один знак после запятой, стоит - Двойной точности (он же Double), так что когда я говорил что dbf хранит свои числовые данные (не целочисленные) в формате Double, я имел в виду dbf создаваемую в AV.
Теперь непосредственно о программировании (я имею в виду программирование на нормальном языке типа С, ну может быть Delphi, ведь я надеюсь, никто не тешит себя мыслью, что при работе AV проц напрямую выполняет команды Avenue)... Какого-бы типа вы создавали переменную, для чтения значений из поля таблицы? Скорее всего такого же, что и само поле. А где вы встречали в нормальных языках что-нибудь подобное функции SetFormat() для переменной числового типа, которая бы возвращала числовой же тип?.. Вот и я что-то не припоминаю. И вообще, приведите мне пример численного типа который бы хранил строго
m знаков до и строго
n после запятой (m и n задается произвольно), ни байтом больше ни байтом меньше?!. Так что если вам отвели 4 байт под Float и 8 под Double, никуда вы от них не уйдете!!! И при любых вычислениях c вещественными числами вам прийдется пользоваться переменными типа Float или Double (кстати, все вещественные типы имеют погрешность, только одни больше, другие меньше), а вот погрешности при работе с ними связаны с представлением числа в вашем дорогом компьютере, если быть более точным - при преобразованиях из десятичной в двоичную, так что даже операция сравнения может давать погрешность... Но это уже другая тема и уж ей-то уделено немало внимания, если не в Inete (как показывает практика ему не все доверяют, да и я, наверное, скоро задумаюсь над этим вопросом, если все подряд будут писать всякую фигню),то в приличной на ваш взгляд библиотеке я думаю что-нибудь найдется. Ну вот наверное и все что, я еще хотел бы от себя добавить! Всем удачи!