J'ai cherché et ne trouve pas la réponse. J'ai vérifié les types de données entre SQL et CLR et je semble avoir cela correct. Mais j'obtiens un résultat différent entre l'utilisation de CLR et SQL. Pas beaucoup, mais assez pour être sur un sou. Et ce n'est pas acceptable.Différence d'arrondi en sql et clr
Exemple dans 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())
affiche 1476,34499999999
Exemple dans 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
qui retourne 1476,345000000000000
Nous devons utiliser le VB pour certains documents, mais pour certains transferts de fichiers, nous utilisons sql. Quelqu'un at-il des suggestions pourquoi c'est?
acclamations
bob
D'abord, bon retour –
Cela a fonctionné très bien, mais je tire les données d'une base de données et ce sont les valeurs. Je les ai juste mis pour l'exemple. Le type de données dans le tableau est décimal (16,6) pour le montant du prêt et le rabais. Merci pour votre temps. –
Vous devez trouver * exactement * ce que sont les valeurs dans la base de données et .NET ensuite. Comme vous pouvez le voir, lorsque vous obtenez les bonnes valeurs dans .NET, l'arithmétique fonctionne bien. –