我目前正在尝试使用存储为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。
有人请帮忙!
答案 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