1

我已经搜索并找不到答案。我仔细检查了 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。任何人有任何建议这是为什么?

干杯
鲍勃

4

1 回答 1

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())
于 2009-10-02T21:33:30.993 回答