Java двойной и Oracle плавают в SQL Server числовой - PullRequest
0 голосов
/ 21 октября 2011

Я работаю над базой данных SQL Server и должен убедиться, что числовые типы достаточно велики для данных.

Существует два источника: Java double и Oracle float(126).

Типы SQL Server: numeric(30,10) или numeric(15,8).

Я прочитал, что двойники Java могут хранить значения от -4.9E-324 до 1.7976931348623157E + 308, Oracle float(126) имеет приблизительно 38 цифр точности, в то время как SQL Server numeric(30,10) имеет только 30 цифр точности и допускает 10 цифр после десятичной точки.

Правильно ли я сказал, что numeric(30,10) небезопасен для double и float(126) и может привести к потере точности или переполнению. Должны ли они быть изменены на DOUBLE PRECISION?

1 Ответ

2 голосов
/ 21 октября 2011

SQL NUMERIC имеет тип десятичный .DOUBLE PRECISION - это двоичный тип с плавающей запятой, обычно отображаемый с точностью до двойного IEEE 754 (64 бита), который является именно тем форматом, который используется в Java double, поэтому он должен идеально соответствовать.FLOAT также является двоичным типом, присутствующим в стандарте SQL, поэтому он также должен присутствовать в SQL Server, но его максимальная точность зависит от реализации, и если он меньше в SQL Server, на самом деле ничего не поделаешь.

...