我在一个 SQL 函数中有以下值,我想让计算工作。值如下:
值1:1.567276144
值2:278576312934.824
方程是value1 / value2
Excel 返回以下值:0.000000000005626020847823060000(正确)
但是在 SQL-Server 中它返回: 0.000000000000000
数据类型是decimal(38,24)
为什么小数点后第 12-15 位不出现?我知道这些值非常小,但我们在做科学工作时需要精确的认证。
我在一个 SQL 函数中有以下值,我想让计算工作。值如下:
值1:1.567276144
值2:278576312934.824
方程是value1 / value2
Excel 返回以下值:0.000000000005626020847823060000(正确)
但是在 SQL-Server 中它返回: 0.000000000000000
数据类型是decimal(38,24)
为什么小数点后第 12-15 位不出现?我知道这些值非常小,但我们在做科学工作时需要精确的认证。
我记得十进制精度是 17,改用浮点数
编辑:对不起,想到了列定义
遵循一种方式,但使用 float 不是一个好主意,因为 float 是一种近似数据类型:
declare @val1 decimal(38,24) = 1.567276144
declare @val2 decimal(38,24) = 278576312934.824
declare @val3 decimal(38,24)
select @val3 = cast (cast(@val1 as float)/cast (@val2 as float) as decimal(38,24));
select @val3;