计算SQL Server中的数量

时间:2015-03-18 00:39:38

标签: stored-procedures formula computation

我已经使用我的规范中提供的公式创建了一个SQL Server存储过程来计算一定的数量。

公式为:

ServiceFee = 25 / numberoftransaction 

WitholdingTaxOfServiceFee = (ServiceFee / 1.12) * 0.02

我在获得正确结果方面遇到了问题。

实施例

numberoftransaction = 4

                    Service Fee    WithTaxOfServiceFee
Transaction1:           6.25              0.11
Transaction2:           6.25              0.11
Transaction3:           6.25              0.11
Transaction4:           6.25              0.11

如果所有交易的总和应为25,服务费为0.45,WithTaxOfServiceFee为0.45,则为预期结果。如果我使用Excel并应用给定的公式,结果是正确的,但在SQL Server中它不是。

我的问题是,是否有更好的公式可以获得25个服务费和0.45个WithTaxServiceFee的正确结果?

1 个答案:

答案 0 :(得分:0)

这里的问题是精度,你使用小数点后2位数的精度。

看一下以下代码之间的区别

DECLARE @a1 Decimal (10,2) = 25.0/4
DECLARE @b1 Decimal (10,2) = (@a1 /1.12)*0.02

SELECT @a1, @b1

这一个:

DECLARE @a1 float = 25.0/4
DECLARE @b1 float = (@a1 /1.12)*0.02

SELECT @a1, @b1

尝试更改变量的数据类型以保存更准确的数字,查看Exact Numerics部分和Approximate Numerics sction下可能的数据类型: https://msdn.microsoft.com/en-us/library/ms187752.aspx