我已经使用我的规范中提供的公式创建了一个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
的正确结果?
答案 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