Diferentes tipos de duplas no vb.net?
Pergunta
Estou usando o QBFC para gerar faturas em um aplicativo de integração do QuickBooks. Estou recebendo uma exceção lançada para lineitem.amount.setValue (Val como duplo) quando tento inserir um dobro gerado programaticamente.
O seguinte não funciona:
lineItem = invoice.ORInvoiceLineAddList.Append.InvoiceLineAdd
Dim amount as Double
amount = summary.dailySold * summary.dailyRate
loggingTxtBox.AppendText("Amount is " & amount & vbNewLine)
lineItem.Amount.SetValue(amount)
A exceção que recebo é System.Runtime.Interropservices.comexception (0x80040305): formato de quantidade inválida. em interrop.qbfc8.iqbamountType.setValue (Double Val)
Os seguintes trabalhos:
lineItem.Amount.SetValue(20.3)
Alguma sugestão? O .NET está interpretando um duplo codificado de maneira difícil de um calculado programaticamente?
Obrigado- Jonathan
Solução
Encontrei.
A impressão de "quantidade" mostrou 21,3
No entanto, o uso do depurador "valor" realmente continha 21.2999999999997. O SetValue aceita apenas duplas com dois pontos decimais.
Isso fez o truque:
amount = CDbl(amount.ToString("F"))
Existe uma maneira mais eficiente de arredondar um duplo a dois lugares decimais?
Obrigado
Jonathan