Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Integer Wert auf 10ner Runden (https://www.delphipraxis.net/90022-integer-wert-auf-10ner-runden.html)

snake41300 10. Apr 2007 15:44


Integer Wert auf 10ner Runden
 
Hi,
Ich habe folgendes Problem:
Ich haben eine Integer Zahl zwischen 0 und ca. 1000 und diese Zahl soll auf glatte 10ner gerundet werden also in etwa so: 23=>20 145 =>150 230=>230 usw...
Villeicht hat ja wer ne Idee.
Gruß Snake

jfheins 10. Apr 2007 15:48

Re: Integer Wert auf 10ner Runden
 
Durch 10, runden, mal 10 ?

Edit: Vll. uts auch die Funktion RoundTo ...

pacman1986 10. Apr 2007 16:17

Re: Integer Wert auf 10ner Runden
 
Zitat:

Zitat von jfheins
Durch 10, runden, mal 10

wenn du damit meinst durch 10 teilen und dann mal 10 genau so hab ichs mir gedacht :D

ibp 10. Apr 2007 16:19

Re: Integer Wert auf 10ner Runden
 
+5 und dann die letzte stelle zu 0 machen!

snake41300 10. Apr 2007 16:24

Re: Integer Wert auf 10ner Runden
 
Zitat:

Zitat von ibp
+5 und dann die letzte stelle zu 0 machen!

Das ist ja schonmal eine gute Idee, aber kann mir auch jemand sagen wie ich die letzte Stelle einer integer Zahl auf 0 bringen kann? Dann wäre mein Problem gelöst :gruebel:

shmia 10. Apr 2007 16:30

Re: Integer Wert auf 10ner Runden
 
Zitat:

Zitat von snake41300
Zitat:

Zitat von ibp
+5 und dann die letzte stelle zu 0 machen!

Das ist ja schonmal eine gute Idee, aber kann mir auch jemand sagen wie ich die letzte Stelle einer integer Zahl auf 0 bringen kann?

Delphi-Quellcode:
gerundeteIntegerZahl := ((zahl+5) div 10) * 10;
Wenn die zahl negativ ist, musst du 5 abziehen, damit kaufmännisch gerundet wird.

Matze 10. Apr 2007 16:30

Re: Integer Wert auf 10ner Runden
 
Wenn du nicht hunderte Werte hast, kannst du getrost die erste Möglichkeit nutzen, die ist dann schnell genug. Das könnte so aussehen:

Delphi-Quellcode:
function ExtendedRound(Number, RoundTo: Integer): Integer;
begin
  result := Round(Number / RoundTo) * RoundTo;
end;

// Aufruf
ShowMessage(IntToStr(ExtendedRound(135, 10)));
Dies funktioniert übrigens auch mit negativen Werten.

snake41300 10. Apr 2007 16:52

Re: Integer Wert auf 10ner Runden
 
Danke für eure Hilfe so hatte ich mir das vorgestellt jetzt geht es!
:-D

inherited 10. Apr 2007 17:10

Re: Integer Wert auf 10ner Runden
 
Zitat:

Zitat von snake41300
...so hatte ich mir das vorgestellt...

Dabei versuchen wir doch immer wieder packende Wendungen und haarsträubende Überraschungen reinzubringen. Mist! :lol:

shmia 10. Apr 2007 17:22

Re: Integer Wert auf 10ner Runden
 
Zitat:

Zitat von inherited
... packende Wendungen und haarsträubende Überraschungen reinzubringen.

Kein Problem, kannst du haben. :twisted:
Round() rundet ja nicht kaufmännisch (also ziffer <= 4: abrunden ziffer >= 5: aufrunden)
sondern wenn die zu rundende Ziffer genau auf 5 steht wird einmal auf- und einmal abgerundet.
Das hängt davon ab, ob die Ziffer davon gerade oder ungerade ist.
ExtendedRound(135, 10) wird zu 140 (aufgerundet)
ExtendedRound(145, 10) wird zu 140 (abgerundet)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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