SQL Server - 使用存储为货币的值计算总计百分比时缺少精度

时间:2018-06-02 23:56:23

标签: sql sql-server

我目前正在尝试使用存储为money的值来计算总美元的百分比。我有问题,十进制值的精度被舍入,有时为零。我将值转换为decimal(23,22),如下所示:

CAST(Dollars / (SELECT SUM(Dollars) FROM #TempTable) AS DECIMAL(23, 22)) AS DollarShare 

一个例子是总支出为645503.98美元的总销售额为7.00美元的记录。返回的值为0.0000150000000000000000,应为1.084423987594933e-5。

有人请帮忙!

1 个答案:

答案 0 :(得分:2)

Money / Money将返还Money。

至少将分子或分母(或两者)转换为浮点数或小数

示例

Declare @num money = 7
Declare @den money = 645503.98

Select AsMoney   = @num/@den
      ,AsFloat   = (@num+0.0)/@den
      ,AsDecimal = convert(decimal(23,22),@num)/@den

<强>返回

AsMoney AsFloat                 AsDecimal
0.00    0.000010844239875949    0.000010844239875949331869340294385