有谁知道为什么,使用SQLServer 2005
SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,9),12499999.9999)
Run Code Online (Sandbox Code Playgroud)
给了我11.74438969709659,
但是当我将分母上的小数位数增加到15时,我会得到一个不太准确的答案:
SELECT CONVERT(DECIMAL(30,15),146804871.212533)/CONVERT(DECIMAL (38,15),12499999.9999)
Run Code Online (Sandbox Code Playgroud)
给我11.74438969
我在excel中有以下一组计算,我希望能够在存储过程中使用.
高强
CellA: 45/448.2 = 0.100401606425703
CellB: 1-CellA = 0.899598393574297
CellC: 1-CellB = 0.100401606425703
CellD: CellC * 448.2 = 45.000000000000000
Run Code Online (Sandbox Code Playgroud)
在SQL中我正在做以下事情:
declare @a decimal(18,15) = 45/448.2
declare @b decimal(18,15) = 1-@a
declare @c decimal(18,15) = 1-@b
declare @d decimal(18,15) = @c * 448.2
Run Code Online (Sandbox Code Playgroud)
我也试过在一行中运行计算
declare @e decimal(18,15) = (1-(1-(45/448.2)))*448.2
Run Code Online (Sandbox Code Playgroud)
当我返回值时,SQL给出了以下内容:
@a: 0.100401000000000
@b: 0.899599000000000
@c: 0.100401000000000
@d: 44.999728200000000
@e: 44.999728200000000
Run Code Online (Sandbox Code Playgroud)
我已经尝试在SQL中调整小数的精度,但我没有什么区别,它只返回小数的前6位数.
Excel在运行公式时是否进行任何优化?
有任何想法吗?