2010-03-21 4 views
0

J'utilise QBFC pour générer des factures dans une application d'intégration Quickbooks. J'obtiens une exception levée pour lineItem.Amount.SetValue (val as Double) lorsque j'essaie d'entrer un double généré par programme.Différents types de doubles dans vb.net?

Ce qui suit ne fonctionne pas:

lineItem = invoice.ORInvoiceLineAddList.Append.InvoiceLineAdd 
Dim amount as Double 
amount = summary.dailySold * summary.dailyRate 
loggingTxtBox.AppendText("Amount is " & amount & vbNewLine) 
lineItem.Amount.SetValue(amount) 

L'exception que je reçois est System.Runtime.InteropServices.COMException (0x80040305): format Montant non valide. à Interop.QBFC8.IQBAmountType.SetValue (Double val)

Les travaux suivants:

lineItem.Amount.SetValue(20.3) 

suggestions? Est-ce que .NET interprète un double codé en dur différemment d'un double calculé par programme?

Jonathan Action de grâce

+0

Qu'est-ce 'amount' égal dans votre exemple? Est-il par hasard négatif ou hors d'une sorte de limites? – Blindy

+1

Pouvez-vous nous donner quelques exemples de données? Qu'est-ce que le débogueur vous dit la valeur de "montant" est avant l'appel à SetValue()? –

+0

Etes-vous sûr que vous êtes supposé fournir des doubles? Peut-être que cette fonction nécessite des décimales? Les programmes financiers fonctionnent souvent avec des décimales plutôt que des doubles. –

Répondre

1

trouvé.

Impression sur « quantité » a montré 21,3

Cependant, en utilisant le débogueur « quantité » effectivement contenu 21,299999999997. SetValue accepte uniquement les doubles avec deux points décimaux.

Cela a fait l'affaire:

amount = CDbl(amount.ToString("F")) 

est-il un moyen plus efficace pour arrondir un double à deux décimales?

Merci

Jonathan

Questions connexes