Sql server Java double和Oracle浮动到SQL Server数值
我正在处理SQL Server数据库,需要确保数字类型足够大,可以容纳数据 有两个来源:JavaSql 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
double
和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(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),其范围必须大得多。下限不同,因为一个列出最小的“常规”值,另一个列出最小的非规范化值。