![]() |
Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Hallo zusammen,
ich habe einiges gesucht, einiges probiert, aber bis jetzt nicht das richtige gefunden. Leider funktioniert auch meine Hilfe in D2007 nicht. Ich suche eine Möglichkeit alle Zahlen auf den nächstmöglichen 0,5er Wert ABZURUNDEN. 0,4649 = 0 0,5 = 0,5 0,51 = 0,5 12,1555 = 12,0 12,49999 = 12,0 12,51 = 12,5 12,97445 = 12,5 Das Ganze soll zur Berechnung von Urlaubsanspruch dienen, wenn jemand im laufenden Jahr anfängt und somit nur anteiligen Urlaub erhält. In diesem Fall wäre es eine Arbeitgeberfreundliche Berechnung. :cry: Schon mal Danke für Hilfe! |
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Eine Möglichkeit wäre: verdoppeln, runden, halbieren.
|
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Hallo Nico,
so wie das sehe, entspräche das ganz grob einer kaufmännischen Rundung. Ich benötige aber immer eine Abrundung. |
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
So geht es wohl auch (nur eine Demo):
Delphi-Quellcode:
Edit1.Text:= floattostr(trunc(StrtoFloat(Edit1.Text)/ 0.5)* 0.5);
|
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Zitat:
Zitat:
Delphi-Quellcode:
uses Math;
ZahlAus := floor(2 * ZahlEin) / 2; |
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Guten Morgen,
danke an alle beteiligten! Der Vorschlag von silver-moon-2000 liefert das für mich richtige Ergebnis. :thumb: |
Re: Real immer auf 0,5 bzw. Ganzzahl ABRUNDEN
Ich hätte explizit "abrunden" schreiben sollen :)
Wenn du möchstest, dass negative Zahlen auch abgerundet werden (in Richtung 0), dann solltest du Trunc statt Floor verwenden:
Delphi-Quellcode:
var
Foo: Real; Bar: Real; begin Foo := 0.9999999999999999{9}; // Next 9 will result in 1.0 Bar := Trunc(Foo * 2) / 2; ShowMessage(FloatToStr(Bar)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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