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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top