Разные виды дублей в vb.net ?
Вопрос
Я использую QBFC для создания счетов-фактур в интегрирующем приложении Quickbooks.Я получаю исключение, сгенерированное для LineItem.Amount.Установите значение (val как Double), когда я пытаюсь ввести программно сгенерированный 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.Службы взаимодействия.COMException (0x80040305):Неверный формат суммы.при взаимодействии.QBFC8.IQBAmountType.setValue(Двойное значение)
Следующие работы:
lineItem.Amount.SetValue(20.3)
Есть какие-нибудь предложения?Интерпретирует ли .NET жестко закодированный double иначе, чем программно рассчитанный?
Спасибо- Джонатан
Решение
Нашел это.
Распечатка "суммы" показала 21.3
Однако при использовании отладчика "сумма" фактически содержала 21.299999999997.setValue принимает только удвоения с двумя десятичными запятыми.
Это сделало свое дело:
amount = CDbl(amount.ToString("F"))
Есть ли более эффективный способ округлить значение double до двух знаков после запятой?
Спасибо
Джонатан