Проблема заключается в том, что вы путаете вопрос о десятичном типе в доступе и о значениях с плавающей запятой одинарного и двойного типа, доступных в доступе.
Если вы используете тип данных валюты в доступе, этомасштабируется целым числом и не производит округления (именно это большинство из нас использует для финансовых расчетов и отчетов).Вы также можете использовать десятичные значения в доступе, и они снова не округляются, поскольку являются упакованными десятичными числами.
Однако и одинарные, и двойные значения, доступные внутри доступа, на самом деле имеют одинаковый формат и соответствуютстандарту IEEE с плавающей запятой.
Для единственной переменной доступа это 32-битное число, а диапазон:
-3.402823E38
to
-1.401298E-45 for negative values
и
1.401298E-45
to
3.402823E38 for positive values
Товыглядит для меня так же, как и стандарт IEEE 754.
Так что, если вы добавляете значения в access как единое целое, вы должны получить одинаковые результаты при разбивке.
Итак, на основе Intelи Access одинарные и двойные, я полагаю, совпадают с этим стандартом IEEE.
Единственная реальная проблема, и вот в чем заключается формат исходных данных, к которым вы получаете доступ, и какие типы текстаили когда происходит извлечение и хранение данных, происходит процесс преобразования строки?
Доступ может конвертировать числа.Попробуйте ввести эти значения в командной строке доступа (окно отладки)
? hex(255)
Above will show FF
? csng(&hFF)
Above will show 255
Редактировать:
Ах, хорошо, теперь я вижу, что это неправильно, моя ошибка здесь.Проблема здесь заключается в том, что если вы преобразуете число в более старый формат IBM (Excess 64?), Вам придется ПОЛУЧИТЬ их код, который они использовали для добавления этих чисел.Фактически, даже тогда разные модели IBM в зависимости от того, что вы приобрели, на самом деле давали разные результаты (больше денег = больше точности).
Итак, вам нужны не только процедуры преобразования для преобразования во внутреннее представление, выТогда нужны процедуры, которые складывают / вычитают / умножают эти числа.Таким образом, простое использование подпрограмм преобразования не поможет вам продвинуться далеко вперед, поскольку вы также должны продублировать их точные подпрограммы, выполняющие математику.Эти типы подпрограмм, вероятно, не все созданы равными с точки зрения того, как они округляют числа и т. Д.