Sql server Java double和Oracle浮动到SQL Server数值

Sql server Java double和Oracle浮动到SQL Server数值,sql-server,floating-point,sqldatatypes,Sql Server,Floating Point,Sqldatatypes,我正在处理SQL Server数据库,需要确保数字类型足够大,可以容纳数据 有两个来源:Javadouble和Oraclefloat(126) SQL Server类型可以是numeric(30,10)或numeric(15,8) 我读到Java Double可以存储从-4.9E-324到1.7976931348623157E+308的值,Oraclefloat(126)大约有38位精度,而SQL Servernumeric(30,10)只有30位精度,小数点后可以有10位 我说的numeric

我正在处理SQL Server数据库,需要确保数字类型足够大,可以容纳数据

有两个来源:Java
double
和Oracle
float(126)

SQL Server类型可以是
numeric(30,10)
numeric(15,8)

我读到Java Double可以存储从-4.9E-324到1.7976931348623157E+308的值,Oracle
float(126)
大约有38位精度,而SQL Server
numeric(30,10)
只有30位精度,小数点后可以有10位


我说的
numeric(30,10)
对于
double
float(126)
是不安全的,可能会导致精度损失或溢出。是否应将其更改为双精度?

SQL的
数值
是十进制类型
DOUBLE PRECISION
是一种二进制浮点类型,通常映射到IEEE 754双精度(64位),这正是Java的
DOUBLE
所使用的格式,因此应该是完美匹配的
FLOAT
也是SQL标准中存在的一种二进制类型,因此它也应该存在于SQL Server上,但其最大精度取决于实现,如果在SQL Server上较小,则实际上无法执行任何操作。

根据,可以设置的最高值为1.79E+308,符合OPs要求。奇怪的是,下限似乎不一致,这是我没有预料到的。@Damien_the_unsiever:这是64位浮点的范围。如果甲骨文允许浮动(126),其范围必须大得多。下限不同,因为一个列出最小的“常规”值,另一个列出最小的非规范化值。