![]() |
Real zur nächst kleineren Ganzzahl abrunden
Hallo
Wie der Titel schon sagt, möchte ich einen Real-Wert auf die nächst kleinere Ganzzahl runden, also 2,9 nicht zu 3 sondern zu 2. Danke schon im vorraus |
Re: Real zur nächst kleineren Ganzzahl abrunden
Delphi-Quellcode:
weitere roundmodes:
setroundmode(rmdown);
round(2.9);
Code:
rmdown -> immer abrunden (minuszahlen auch)
rmup -> immer aufrunden (minuszahlen auch) rmtruncate -> Wert abschneiden [-2,9] -> [-2] / [2,9] -> [2] rmnearest -> normaler Rundungsmodus, bei .5-Werten auf gerade Zahl runden |
Re: Real zur nächst kleineren Ganzzahl abrunden
Wie wärs mit trunc(zahl);?
|
Re: Real zur nächst kleineren Ganzzahl abrunden
danke für die schnelle antwort, funktioniert perfekt! Danke
|
Re: Real zur nächst kleineren Ganzzahl abrunden
Zitat:
Häufig gebrauch und auch kurz sind diese hier: - trunc(real) Alle Nachkommastellen werden abgerundet und das ist das gleiche wie immer abrunden - round(zahl) Rundet nicht mathematisch richtig sondren siehe unten (...richtiger Mist...) - roundto(zahl,-i) Rundet bis zur i-ten Stelle (geht auch im positiven bereich) |
Re: Real zur nächst kleineren Ganzzahl abrunden
Zitat:
|
Re: Real zur nächst kleineren Ganzzahl abrunden
Was ist da der Unterschied?
AFAIK runden beide bei Nachkommastelle <5 ab und bei >=5 auf. |
Re: Real zur nächst kleineren Ganzzahl abrunden
Ich habe Bankkaufmann gelernt, als Kassierer und als Kreditberater gearbeitet, aber von diesem "Bankers Rounding" habe ich das erstemal in der Delphi-Hilfe gelesen! Welcher "Banker" wo auf der Welt verwendet diese Sch**** eigentlich? Und für was? :wall:
@3_of_8: 1,5 und 2,5 würde zu 2 gerundet (nämlich zur nächsten geraden Zahl)! :roteyes: |
Re: Real zur nächst kleineren Ganzzahl abrunden
Was für einen Sinn macht es, zur nächsten geraden Zahl zu runden?
|
Re: Real zur nächst kleineren Ganzzahl abrunden
Hallo,
Zitat:
![]() Gruß xaromz |
Re: Real zur nächst kleineren Ganzzahl abrunden
oder ganz einfach abrunden mit floor()
bzw aufrunden mit ceil() Gruß Thomas |
Re: Real zur nächst kleineren Ganzzahl abrunden
trunc schnippelt den Nachkommaanteil ab, liefert einen integer, int macht das Gleiche, liefert jedoch einen Extended.
Wer korrekt runden möchte, sollte sowas versuchen:
Delphi-Quellcode:
Beispiele:
Function CorrectRound (aValue, aGranularity : Extended) : Extended;
Begin Result := Int (aValue/aGranularity + 0.5)*aGranularity; End;
Delphi-Quellcode:
Begin
a := CorrectRound (1237.567, 0.10); // 1237,600 a := CorrectRound (1237.567, 0.01); // 1237,570 a := CorrectRound (1237.567, 1.00); // 1238,000 a := CorrectRound (1237.567, 10.00); // 1240,000 a := CorrectRound (1237.567, 0.25); // 1237,500 a := CorrectRound (1237.567, 2.00); // 1238,000 a := CorrectRound (1237.567, 5.00); // 1240,000 ... |
Re: Real zur nächst kleineren Ganzzahl abrunden
Zitat:
Delphi-Quellcode:
der Befehl ceil ist Undefiniert??? Hä... brauch ich noch was in uses? Delphi 2005 PE
ResultI := ceil(Result);
Mfg Tobi |
Re: Real zur nächst kleineren Ganzzahl abrunden
Naja, was braucht man denn, wenn man mathematische Funktionen sucht?
|
Re: Real zur nächst kleineren Ganzzahl abrunden
Zitat:
Byby Mfg Tobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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