Seite 1 von 2

Rechenoperator Schalter: Negativ / Positiv ?

Verfasst: 06.07.2006 15:45
von Condor
Hi,

gibt es eine einfache Methode einer negativen Zahl das Minus wegnzunehmen und sie somit zu einer positiven Zahl zu machen ?
Gibt es vielleicht einen Rechen Operator/Befehl (+/-) wie auf einem Taschenrechner ?

Ich hoffe jemand hat das verstanden was ich meine :-)

Mfg
Condor

Verfasst: 06.07.2006 16:04
von rox²³
In welcher Beziehung?
php oder wo?

Verfasst: 06.07.2006 16:26
von nkler
Das würde mir spontag für php einfallen.

Code: Alles auswählen

 if ( $zahl < 0 ) { $zahl = $zahl * -1; }

Verfasst: 06.07.2006 16:50
von mr.no-name
Bei PHP (und sicherlich auch anderen Script-/Programmiersprachen) gehts auch mit der abs() Funktion...
Was jetzt sinnvoller bzw. performanter ist weiß ich nicht.

Verfasst: 06.07.2006 17:35
von S2B
Ich würde auf jeden Fall immer die PHP-internen Funktionen verwenden, da die im Gegensatz zu selbst geschriebenen besser optimiert sind (bei internen Funktionen ist auch mehr Optimierung möglich).

Verfasst: 07.07.2006 01:48
von Pyramide
All zu viel kann man bei ($zahl >= 0 ? $zahl : -$zahl) aber nicht optimieren :roll: .

Verfasst: 07.07.2006 09:33
von rocknix
Pyramide hat geschrieben:All zu viel kann man bei ($zahl >= 0 ? $zahl : -$zahl) aber nicht optimieren :roll: .
grundsätzlich kann man aber das vorzeichen - zumindest das eines integers -auch durch bit-operatoren ausblenden. das dürfte dann wohl doch um einiges schneller sein, als eine if-abfrage.

Code: Alles auswählen

int_abs = int_signed & 0x7fffffff
was anderes macht abs() übrigens auch nicht ( bei integer argumenten)

Verfasst: 07.07.2006 10:33
von rkern
rocknix hat geschrieben:

Code: Alles auswählen

int_abs = int_signed & 0x7fffffff
was anderes macht abs() übrigens auch nicht ( bei integer argumenten)
funktioniert leider so nicht auf den gängigsten Prozessoren (z.B. Intel x86).

siehe http://en.wikipedia.org/wiki/Two%27s_complement

Da die Darstellung negativer Zahlen abhängig von deiner CPU ist, kannst DU nicht mit Bit-Operatoren arbeiten und portabel bleiben.

mfg Ralph

Verfasst: 07.07.2006 11:10
von Patrik
REicht es nicht einfach mir -1 zu multiplizieren, falls eine funktion wie abs() nicht zur verfügung steht?

Verfasst: 07.07.2006 11:57
von Condor
Erstmal ein Dankeschön an alle Beteiligten.

Da muss ich rkern recht geben.

Ich dachte nämlich, das PHP vielleicht eine eigene Funktion bzw. Operator dafür hat, den ich noch nicht kenne.

Scheinbar ist das nicht so.

Aber wir schon einige von euch gepostet haben, kann man ja eine Formel dafür bauen :-)

Mfg
Condor