vb.net中不同种类的双打?

时间:2010-03-21 22:25:16

标签: .net double qbfc

我正在使用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- 乔纳森

1 个答案:

答案 0 :(得分:1)

找到它。

打印出“数量”显示为21.3

但是,使用调试器“amount”实际上包含21.299999999997。 SetValue只接受带有两个小数点的双精度数。

这就是诀窍:

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

是否有更有效的方法将双倍数字舍入到两位小数?

由于

乔纳森