![]() |
Vorzeichen entfernen
Hi,
Bis jetzt habe ich zum berechnen des Betrages immer folgenden Code benutzt:
Delphi-Quellcode:
Ich schätze, dass es eine Geschicktere Lösung geben wird.
Zahl:=sqrt(Zahl*Zahl)
Welche könnte das sein? |
Re: Vorzeichen entfernen
ABS()
|
Re: Vorzeichen entfernen
Delphi-Quellcode:
Achja: Uses System.
absoluterwert := Abs(-5);
Edit Nachtrag: Ich komm mir heute langsam vor... |
Re: Vorzeichen entfernen
Danke. Genau danach hab ich gesucht.
|
Re: Vorzeichen entfernen
uses System? O_o
Phoenix, war das ironisch gemeint? Wenn nein, System ist IMMER eingebunden. |
Re: Vorzeichen entfernen
Ich bin heut einfach nicht mehr ganz wach... :roteyes:
|
Re: Vorzeichen entfernen
Ich auch.
Ich bin heut einfach nicht mehr ganz wach... Rotating Eyes |
Re: Vorzeichen entfernen
die wurzel ziehen ist nicht umbedingt das beste für die cpu. ohne abs wäre eine Lösung zu schauen ob die Zahl < 0 ist und wenn dem der fall ist * -1 zu rechnen. bzw. einfach das minus vorranstellen (denn - + - ergibt +)
Delphi-Quellcode:
if zahl < 0 then
zahl := -zahl; |
Re: Vorzeichen entfernen
...wobei abs() um einiges schneller ist. Wenn der Compiler es inlinet (was er vermutlich tun wird), braucht es sogar nur 3 Assemblerbefehle (bei Integern, bei Float wäre es ein FPU-Befehl), und zwar ein cdq, ein xor und ein sub. Ein if und eine Subtraktion sind dadurch langsamer.
|
Re: Vorzeichen entfernen
Zitat:
kannte das nur als - * - = + da würde ja -5 + -2 +7 ergeben, richtig? oder vielleicht +3... :gruebel: das minus voranstellen macht ja auch ne multiplikation sicher nur ein schreibfehler, aber wollte das nicht so stehen lassen... ein etwas exotischer weg wäre sicher auch, das höchstwertige Bit auf 0 zu setzen :) Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 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