Типы данных Oracle: совет по выбору NUMBER против BINARY DOUBLE?

Я создаю научное приложение, которое выполняет много операций с числами на Java и C, и точность критически важна. В базе данных Oracle не происходит никакого подсчета чисел (она просто используется для хранения переменных между математическими вычислениями).

Я использовал тип данных двойной точности для всех своих переменных в Java и C, который в значительной степени основан на IEEE 754. Таким образом, данные, записанные в базу данных и затем считанные из базы данных, будут оба типа данных с двойной точностью в C или Java.

Что бы вы посоветовали мне использовать для хранения данных с двойной точностью в Oracle - NUMBER или BINARY DOUBLE?

Например, допустим, у меня есть переменная X_Java, которую я записываю в базу данных как переменную X_DB в виде BINARY DOUBLE. Если я прочитаю эти данные обратно в Java из базы данных и сохраню их в переменной X_Java2, будет ли X_Java точно соответствовать X_Java2?

Как изменится ситуация, если я сохраню X_DB в базе данных как ЧИСЛО?

UPDATE 1: Обратите внимание, что мой критерий "точности" - это то, насколько близко число, считанное ИЗ базы данных, к числу, которое было доступно до записи в базу данных.

С одной стороны, я думаю, что если число, доступное до записи в базу данных, основано на IEEE 754, то тип данных, используемый для хранения этого значения внутри базы данных, должен быть точным совпадением, если этот тип данных также основан на IEEE 754.

С другой стороны, поскольку 64-битное число (двойной точности) может точно хранить только 16 (иногда 17) цифр точности, то хранение в базе данных в виде ЧИСЛА с 38 цифрами точности должно точно отображаться от и до двойной точности. Одним из недостатков является то, что тип данных NUMBER не может хранить такие большие (или такие маленькие) значения, как BINARY DOUBLE.

Таким образом, мой постинг.

5
задан ggkmath 1 March 2012 в 02:36
поделиться