vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Asymmetrisches Runden 
Autor: Anthe
Datum: 06.09.15 23:36

Hallo an alle!

Irgendwie packe ich es gerade gar nicht: Seit gefühlten 100 Jahren runden wir mit der folgenden Funktion (weil das VB Zeug ja nicht funktioniert)
Noch *nie* gab es irgendein Problem mit dieser Funktion

' Asymmetrisches Arithmetisches Runden fuer beliebige Anzahl Dezimalstellen
' - genauere Info MSDN - KB - Q196652
' Variabler Faktor ersatzlos gestrichen

Public Function ASA_Rnd(ByVal x As Double, _
Optional ByVal DecimalDigits As Long = 0) As Double
Dim y As Double, z As Double

z = 10 ^ DecimalDigits
y = Abs(x) * z + 0.5
y = (Int(y)) / z
ASA_Rnd = Sgn(x) * y
End Function

Gerade sitze ich auf einem Windows 10 PC und möchte den Wert 1,865 auf 2 Dezimalen runden:
Setze ich einen Stoppunkt auf die y = Abs(...) Zeile hat der Wert y den erwarteten Wert 817
Nach dem Teil ((Int(y)) wird aus 817 auf einmal 816 ! (und später 8,16). Seit über eine Stunde rechne ich in einer riesigen Faktura Zeile für Zeile nach, warum es um einen Cent nicht stimmt ?!!?!?

Die aufrufenden Zeilen davor lauten

' eigentlich so, zwecks Test aber zerteilt
' PosBetrag = ASA_Rnd(WizVal(!Mng) * PosPrs * (1 - WizVal(!RAB) / 100), 2)

PosBetrag = WizVal(!Mng) * PosPrs * (1 - WizVal(!RAB) / 100)
PosBetrag = ASA_Rnd(PosBetrag, 2)

Mng = 5
PosPrs = 1.633
Rab = 0

Hat irgendwer eine Idee ?! Kann doch nicht an Windows 10 liegen ?! Kapier grad gar nix ...

lg
Andi

PS: WizVal ist eine Val() Funktion, die Null Werte aus DB Feldern abfängt (und Wert 0 zurückgibt)

Beitrag wurde zuletzt am 06.09.15 um 23:38:53 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Asymmetrisches Runden1.799Anthe06.09.15 23:36
Re: Asymmetrisches Runden1.057minimalist07.09.15 08:01
Re: Asymmetrisches Runden1.022whisky110807.09.15 11:58
Re: Asymmetrisches Runden1.129Anthe07.09.15 14:24
Re: Asymmetrisches Runden1.235Anthe07.09.15 14:29
Re: Asymmetrisches Runden1.085whisky110807.09.15 15:29
Re: Asymmetrisches Runden1.013Manfred X07.09.15 16:14
Re: Asymmetrisches Runden1.014Anthe07.09.15 17:23
Re: Asymmetrisches Runden979Anthe07.09.15 17:30
Re: Asymmetrisches Runden1.128Manfred X07.09.15 18:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel