我搜索过但找不到答案。我仔细检查了SQL和CLR之间的数据类型,我似乎有正确的。但是我在使用CLR和SQL之间得到了不同的结果。不多,但足以超过一分钱。这是不可接受的。
VB.NET中的示例
Dim dLoanAmount As Decimal = 169500
Dim dNetDiscount As Decimal = 100.871
Dim dDiscountPremium As Decimal = (dLoanAmount * (dNetDiscount - 100.0) / 100.0)
Console.WriteLine("original amount is " + dDiscountPremium.ToString())
将显示1476.34499999999
SQL中的示例
DECLARE @loanAmt decimal (20,10)
DECLARE @discount decimal (20,10)
SET @loanAmt = 169500.000000
SET @discount = 100.871000
select @loanAmt*(@discount-100.0)/100.0
返回1476.345000000000000
我们必须将VB用于某些文档,但对于某些文件传输,我们使用sql。任何人有任何建议为什么这是?
欢呼声
鲍勃
答案 0 :(得分:2)
您使用的是双文字而不是十进制文字。试试这个:
Dim dLoanAmount As Decimal = 169500D
Dim dNetDiscount As Decimal = 100.871D
Dim dDiscountPremium As Decimal = (dLoanAmount * (dNetDiscount - 100D) / 100D)
Console.WriteLine("original amount is " + dDiscountPremium.ToString())