Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Rundungsproblem (https://www.delphipraxis.net/22229-rundungsproblem.html)

neolithos 14. Mai 2004 14:46


Rundungsproblem
 
Wenn ich die Zahl 0.725 mittels Math.Round(, 2) runde
kommt 0.72 und
nicht wie ich erwartet hatte 0.73 heraus.

Wie kann man das Ändern?

kiar 14. Mai 2004 15:16

Re: Rundungsproblem
 
hallo neo,

ich glaub das ist mathematisch richtig es wir immer zur geraden zahl gerundet.

bei 0.725 zur 0.72
bei 0.735 zur 0.74

raik

iaby 14. Mai 2004 15:22

Re: Rundungsproblem
 
das ist mathematisch falsch gerundet!

was kommt den bei 0,726 raus?
rechne doch:
Delphi-Quellcode:
 math.round(zahl + 0,005, 2)
gruss,
iaby

Matze 14. Mai 2004 15:22

Re: Rundungsproblem
 
Zitat:

Zitat von kiar
ich glaub das ist mathematisch richtig es wir immer zur geraden zahl gerundet.

bei 0.725 zur 0.72
bei 0.735 zur 0.74

Echt? Ich dachte, ab 5 wird aufgerundet. :roll:

Suche mal hier nach [dp]kaufmännisch runden[/dp]

Edit: Mist, ist ja die .NET Sparte, sorry, dann hab ich keine Ahnung. :duck:

dizzy 14. Mai 2004 15:24

Re: Rundungsproblem
 
Eigentlich ab x.5 zu x+1 und unter x.5 zu x.

Aber floats könnten da etwas "garstig" sein, so dass 0.725 eigentlich als 0.7249999999... dargestellt werden muss, und schon isses passiert. Lösen kann man das nur, wenn man eine gewisse Ungenauigkeit hin nimmt, indem man explizit sagt x.y5 := x.y5000001 oder so.

neolithos 14. Mai 2004 17:07

Re: Rundungsproblem
 
Übrigens, wie man rundet war mir klar!

Aber ich dachte man kann das Runden in .NET ähnlich steuern wie in Delphi32.

Ich habe mir jetzt selbst eine kleine Runden Funktion geschrieben.

Matze 14. Mai 2004 20:54

Re: Rundungsproblem
 
Zitat:

Zitat von neolithos
Ich habe mir jetzt selbst eine kleine Runden Funktion geschrieben.

Es wäre für die anderen, die es inetessiert, nett von dir, wenn du diesen hier veröffentlichen könntest. :)

Edit: Sorry, ist zwar kein deutsch, aber ich hoffe, du weißt, was gemeint ist. :mrgreen:

mschaefer 14. Mai 2004 21:35

Re: Rundungsproblem
 
Moin moin zusammen,

ja das gute alte Rundungsproblem, gab´s schon auf dem C64 mit CP/M-Modul und Turbo-Pascal.

Mit den Float oder Extendet als Datentyü gibt es da schon ab und an mal kleine Überaschungen.
Theoretisch könnte man da jetzt mit eigens gestrickter BCD-Arithmetik herangehen, aber das ist
zum Glück inzwischen nicht mehr nötig...

Nimm mal als Datentyü "Currrency", da sollte es kaufmänsich korrekt runden (ab 0.5 zu 1.0).

Viele Grüße // Martin

Nicodius 14. Mai 2004 21:48

Re: Rundungsproblem
 
rauskommen sollte .3 ;)

glkgereon 14. Mai 2004 22:22

Re: Rundungsproblem
 
machs so:

Delphi-Quellcode:
x:=rnd(x*100) / 100
is zwar blöd, sollte aber funzen :-D

das ganze könnte man s machen, das er statt 100
10 hoch anzahl derNachkommastellen -1


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz