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

10 進数の代わりに二重リテラルを使用しています。これを試して:

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 に答える