Domino 9 und frühere Versionen > ND6: Entwicklung

LS Rundungsproblem

(1/2) > >>

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