Kaufmännisches Runden
-
Gibt es eine bessere Alternative (kürzer?) zu meiner Eigenlösung zum Ausdrücken des kaufmännischen Rundens (auf 0 Stellen) ohne Vergleichsoperatoren und ausschließlich mit der Gaußklammer?:
(a ist ein beliebiger Ausdruck)
Runden(a) = [a] + (1+[(a-[a])-0,5])
-
[a + 0.5]
-
Michael E. schrieb:
[a + 0.5]
Nee, für negative Zahlen paßt das nicht.
-
Tut Tims Code auch nicht.
-
Michael E. schrieb:
Tut Tims Code auch nicht.
Den hatte ich eh nicht kapiert.
Mal schauen.Runden(a) = [a] + (1+[(a-[a])-0,5]) //Sein Code
Runden(a) = [a] + 1+[(a-[a])-0,5] //Klammen weg
Runden(a) = [a] + 1 + [a-[a]-0,5] //Klammern weg
Runden(a) = [a] + [1 + a-[a]-0,5] //Ganze Zahlen kann man rein- und raustun.
Runden(a) = [a] - [a] + [a+0,5] //dito
Runden(a) = [a+0,5] //Deine Formel.
-
oh verdammt. Dann wie wäre es mit 'ner richtigen Lösung ?
EDIT: mein Gedankengang:
Ganze Zahl + 0 oder 1 (als würde ich Vergleiche nutzen)
wie erhalte 0 oder 1?
Ich erhalte -1 und 0 durch das Abrunden (der Nachkommastelle - 0.5)
Da addiere ich 1 drauf und hab, was ich wollte.Trotzdem siehe oben
-
Tim06TR schrieb:
oh verdammt. Dann wie wäre es mit 'ner richtigen Lösung ?
Ist das eine Hausaufgabe? Und darfste wirglich nicht die Signum-Funktion benutzen?
-
EDIT 8: Ok nochmal:
sgn(a) * [|a| + 0.5]
super das geht prima
EDIT 9: Auch wenn es irgendwie schon mit "Vorzeichenabfrage" ist.
|a|/a * [|a| + 0.5] ist leider bei 0 undefiniert, sonst wär ich damit ja schon zufrieden
-
Tim06TR schrieb:
EDIT 8: Ok nochmal:
sgn(a) * [|a| + 0.5]
super das geht prima
EDIT 9: Auch wenn es irgendwie schon mit "Vorzeichenabfrage" ist.
|a|/a * [|a| + 0.5] ist leider bei 0 undefiniert, sonst wär ich damit ja schon zufrieden
Ich behaupte einfach mal, dass es nur mit der Gaußklammer nicht funktioniert.