Domino 9 und frühere Versionen > ND6: Entwicklung
LS Rundungsproblem
BMT216A:
Hallo,
ich steh jetzt grad aufm Schlauch. Wenn ich mit den Beträgen in den Feldern netto1 = 57,50 und mit 19% rechne bekomme ich einen Rundungsfehler in meinem Script. Dieses sieht wie folgt aus.
*************************************************************
' Routine zum Berechnen der Steuer über einen Button
'
' Versionskontrolle:
*************************************************************
Dim netto1_str, netto2_str, netto3_str As String
Dim netto1, netto2, netto3 As Double
Dim gesnetto As Double
Dim Endbetrag As Double
Dim Zins As String
Dim Zinsbetrag As Double
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim MWSt_str As String
Set uidoc = uiws.CurrentDocument
netto1_str = Trim (uidoc.FieldGetText ("netto1"))
If netto1_str = "" Then
netto1 = 0
Elseif Not Isnumeric (netto1) Then
netto1 = 0
Else
netto1 = Cdbl (netto1_str)
End If
für netto2 und netto 3 siehe oben
Print "Netto1: " & netto1 & " Ausgelesen: " & netto1_str
Print "Netto2: " & netto2 & " Ausgelesen: " & netto2_str
Print "Netto3: " & netto3 & " Ausgelesen: " & netto3_str
gesnetto = netto1 + netto2 + netto3
MWSt_str = (uidoc.FieldGetText ("MWSt"))
zins = MWSt_str
' Neuer Absatz für Steuerfreie Berechnung
If MWSt_Str = "Steuerfrei" Then
zins = 0
End If
' Ende neuer Absatz für Steuerfreie Berechnung
Zinsbetrag = gesnetto * zins / 100
Zinsbetrag = Round(Zinsbetrag,2)
Endbetrag = gesnetto + Zinsbetrag
Print "Zins in Prozent " & zins & " Zins in EUR " & Zinsbetrag
Call uidoc.FieldSetText ("Zinssatz", Cstr (Zinsbetrag))
Call uidoc.FieldSetText ("gesnetto", Cstr (gesnetto))
Call uidoc.FieldSetText ("Endbetrag", Cstr (Endbetrag))
Call uidoc.Refresh
Was mache ich hier falsch - bzw. zu umständlich.
Vielen Dank für Eure Hilfe
Christian
Axel:
Das Problem ist kein LS-spezifiesches Problem, sondern das tritt in allen Sprachen auf.
Die Lösung: Addiere zu deinem Nettobetrag einfach 0,005 hinzu. Dann sollte es passen.
Axel
koehlerbv:
Verzichten sollte man auch auf blödsinnige Typkonvertierungen, die man unkontrolliert der Software überlässt bzw. aufzwingt. Die Variable Zins als String zu deklarieren, muss schon als sträflich bezeichnet werden.
Bernhard
BMT216A:
Hallo Axel,
die Antwort verstehe ich nicht ganz. Das Feld ist doch von meinem User zu füllen und kann daher immer verschiedene WErt beinhalten.
Bekomme ich denn dann bei anderen Beträgen nicht ein Rundungsproblem?
Ich kann zwar in meinem Code immer 0,005 hinzurechnen - aber ich weiß nicht wie das immer so ist. Bei mir müssen die Beträge genau passen, da ich Notesler in einer Bank bin.
Danke
DerAndre:
Hier wird Dir geholfen
Rundungsproblem
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln