1

我正在使用 QBFC 在 Quickbooks 集成应用程序中生成发票。当我尝试输入以编程方式生成的双精度时,lineItem.Amount.SetValue(val as 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): Invalid Amount format。在 Interop.QBFC8.IQBAmountType.SetValue(双 val)

以下作品:

lineItem.Amount.SetValue(20.3)

有什么建议么?.NET 对硬编码双精度的解释是否与以编程方式计算的双精度不同?

谢谢-乔纳森

4

1 回答 1

2

找到了。

打印出“金额”显示21.3

但是,使用调试器“金额”实际上包含 21.299999999997。SetValue 仅接受带两位小数的双精度数。

这成功了:

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

有没有更有效的方法将双精度位舍入到小数点后两位?

谢谢

乔纳森

于 2010-03-22T01:07:55.387 回答