vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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

VB.NET - Ein- und Umsteiger
Re: Math.Round(Double, MidpointRounding) rundet nicht richtig? 
Autor: Manfred X
Datum: 18.10.10 07:00

Hallo!

Ergänzender allgemeiner Hinweis:
Die Rundungsmethoden (System.Math.Round) für die
IEEE-Datentypen Single/Double setzen IEEE Konventionen um, d.h.
sie liefern nicht immer das Ergebnis, wie man es erwarten würde:

Betrachten wir folgende Zahl (insgesamt 11 Stellen):
170601.85815

Rundet man diese Zahl als DECIMAL auf 4 Stellen
(MidPointRounding.AwayFromZero) erhält man, wie erwartet:

170601.8582

Rundet man diese Zahl als DOUBLE auf 4 Stellen
(MidPointRounding.AwayFromZero) erhält man:

170601.8581

Das Verhalten bei Verwendung von MidpointRounding.ToEven
ist entsprechend.

Bei hinreichend kleiner Stellenzahl kann man die IEEE-Konv.
umgehen, wenn man vor dem Runden die CDec-Konvertierung des Double-Wertes
durchführt (=die Decimal-Rundung).
Dim dbl as Double = 170601.85815
Dim rd As Double = Math.Round(CDec(dbl), 4, MidpointRounding.AwayFromZero)

Übrigens: 0.5F ist ein Singlewert; 0.5# bzw. 0.5R liefert einen Double-Wert.

Was für ein MidPoint-Rundungsverfahren benötigst Du genau?
Wie soll es sich bei negativen Werten verhalten?

MfG
Manfred
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Math.Round(Double, MidpointRounding) rundet nicht richtig?3.641Moeppel17.10.10 21:43
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.873Preisser17.10.10 22:06
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.778Moeppel17.10.10 22:23
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.902Manfred X18.10.10 07:00
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.732Moeppel18.10.10 08:41
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.706Manfred X18.10.10 09:25
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.823ModeratorDaveS18.10.10 11:50
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...3.085Moeppel18.10.10 17:25
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.742ModeratorDaveS17.10.10 22:06
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.702Nico1983HH18.10.10 09:50
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.669Nico1983HH18.10.10 17:36
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.656Moeppel18.10.10 19:29
Re: Math.Round(Double, MidpointRounding) rundet nicht richti...2.709Moeppel18.10.10 19:38

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