![]() |
Matheprobleme mit round
Hallo!
Ich habe ein Problem mit der Funktion round. Laut Delphi wird 58,5 nicht auf 59 gerundet, sondern auf 58. :wiejetzt: Was soll ich tun? |
Re: Matheprobleme mit round
Wie wärs damit:
Delphi-Quellcode:
round(Zahl*100) / 100
|
Re: Matheprobleme mit round
Hm, ich erinner mich an eine Variable
![]() |
Re: Matheprobleme mit round
Zitat:
Flare |
Re: Matheprobleme mit round
Danke! Ich arbeite jetzt so:
Delphi-Quellcode:
Anscheinend rundet round immer bei .5 Werten ab.
round(Zahl+0.01);
|
Re: Matheprobleme mit round
|
Re: Matheprobleme mit round
Delphi-Quellcode:
Man wird wohl dann auf rmnearest setzen müssen und dann müsste Round auch "richtig" rundenHinweis: Die Funktionsweise von Round kann mit der Prozedur Set8087CW oder der Funktion SetRoundMode gesteuert werden. Unit Math type TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate); function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode; Beschreibung Mit SetRoundMode können Sie festlegen, welchen Rundungsmodus die FPU verwendet. Der Rundungsmodus kann folgende Werte annehmen: Wert Bedeutung rmNearest Rundet zum nächsten Wert. rmDown Rundet gegen minus unendlich. rmUp Rundet gegen plus unendlich. rmTruncate Schneidet den Wert ab. Positive Werte werden auf-, negative Werte abgerundet. Edit: Habs mal getestet, kommt das selbe raus. Aber wenn ich round(1.5) mache kommt 2 raus aber bei round(58.5) = 58 das Verhalten versteh ich dann nicht. Scheint aber nur bei 1.5 so zu sein, bei 0.5 und 2.5 macht er das selbe wie bei 58.5 |
Re: Matheprobleme mit round
Man köntne aber:
Delphi-Quellcode:
man müsste nur mal gucken wie es bei negativen Zahlen aussieht
function mathround(x : real) : integer;
Begin if frac(x) >= 0.5 //frac liefert den das nach dem , then result := ceil(x) //rundet auf else result := trunc(x); //runded ab end; |
Re: Matheprobleme mit round
@Eichhörnchen: Gucke mal wo Hawkeye219 hingelinkt hat!
Zitat:
Flare |
Re: Matheprobleme mit round
ach mist... den hab ich übersehen
hab aber fast das gleiche nur stimmt wohl mein trunc net.. Daher nochmal:
Delphi-Quellcode:
function mathround(x : real) : integer; Begin if frac(x) >= 0.5 //frac liefert den das nach dem , then result := ceil(x) //rundet auf else result := floor(x); //runded ab end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz