2010-03-21 2 views
0

QBFC를 사용하여 Quickbooks 통합 응용 프로그램에서 인보이스를 생성하고 있습니다. 프로그래밍 방식으로 생성 된 double을 입력하려고하면 lineItem.Amount.SetValue (double 형 val)에 예외가 발생합니다.vb.net에서 여러 종류의 복식?

다음은 작동하지 않습니다 : 유효하지 않은 금액 형식 : 내가받을

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)입니다.

lineItem.Amount.SetValue(20.3) 

어떤 제안 : Interop.QBFC8.IQBAmountType.SetValue (더블 발)

다음 작품에서 ? .NET은 프로그래밍 방식으로 계산 된 것과 다르게 하드 코딩 된 이중 해석을합니까?

고맙다 - 조나단은 그것을

+0

? 어쩌면 부정적이든 일종의 한계에서 빠져 나왔습니까? – Blindy

+1

몇 가지 샘플 데이터를 제공해 주시겠습니까? 디버거에서 SetValue()를 호출하기 전에 "amount"값이 무엇인지 알려줍니다. –

+0

복식을 공급한다고 확신합니까? 아마도이 함수에는 소수가 필요합니까? 금융 프로그램은 종종 두 배가 아닌 십진수로 작동합니다. –

답변

1

발견. "양"을 인쇄

실제로 21.299999999997을 포함 디버거 "양"을 사용하여, 그러나

21.3을 보였다. SetValue는 두 개의 소수점이있는 double을 받아들입니다. 이중에 소수점 두 자리를 반올림하는보다 효율적인 방법이

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

있습니까 :

이 속임수를 썼는지? `당신의 예에서와 동일한 amount` 무엇

감사

조나단