我正在使用QBFC在Quickbooks集成应用程序中生成发票。当我尝试输入以编程方式生成的double时,我正在为lineItem.Amount.SetValue(val为Double)抛出异常。
以下不起作用:
lineItem = invoice.ORInvoiceLineAddList.Append.InvoiceLineAdd
Dim amount as Double
amount = summary.dailySold * summary.dailyRate
loggingTxtBox.AppendText("Amount is " & amount & vbNewLine)
lineItem.Amount.SetValue(amount)
我收到的例外是 System.Runtime.InteropServices.COMException(0x80040305):无效的金额格式。 在Interop.QBFC8.IQBAmountType.SetValue(Double val)
以下作品:
lineItem.Amount.SetValue(20.3)
有什么建议吗? .NET是否解释了硬编码的双精度,而不是以编程方式计算的双精度?
Thanks- 乔纳森
答案 0 :(得分:1)
找到它。
打印出“数量”显示为21.3
但是,使用调试器“amount”实际上包含21.299999999997。 SetValue只接受带有两个小数点的双精度数。
这就是诀窍:
amount = CDbl(amount.ToString("F"))
是否有更有效的方法将双倍数字舍入到两位小数?
由于
乔纳森