Hallo,
gestern war ich stundenlang mit einem kleinen Makro beschäftigt, das mir eine Datenbank derartig umstellen soll, dass die Datensätze zweizeilig dargestellt werden ( nur für bessere Lesbarkeit ).–>
Dabei habe ich mich immer gewundert, dass die „round“-Anweisung sich so komisch verhält und bin dann auf CInt ausgewichen.
Das ging aber auch nicht besser. Aber im Gegensatz zu „Round“ wird hier in der Hilfe zu Excel 2007 ganz genau gesagt, warum:
„Wenn die Nachkommastelle genau 0,5 beträgt, wird der Wert mit CInt und CLng immer bis zur nächsten geraden Ganzzahl gerundet. So wird beispielsweise 0,5 zu 0 abgerundet und 1,5 zu 2 aufgerundet.“
Abgesehen von dem internen Widerspruch der Aussagen ist das ja wohl die absolute Absage an den gesunden Menschenverstand!
Heißt das für den Anwender jetzt, dass er seine Rundung in den ( hoffentlich ) stetigen Bereich verlegen muss?
zunächsteinmal kann ich in dem Text der Hilfe keinen „internen Widerspruch“ erkennen. Es wird auf die nächste grade Zahl gerundet, mit der Annahme, dass 0 auch grade ist.
Auch dein Beispiel zeigt, dass die Funktion genau das macht, was in der Hilfe beschrieben ist.
Das dir das Verhalten der Funktionen nicht passt, liegt wohl daran, dass du sie für einen Zweck nutzt, für den sie nicht sind. CInt und CLng sind nur dafür da, den Datentyp umzuwandeln und nicht für’s runden.
Was in der Hilfe in Bezug auf Nachkommastellen steht, soll nur deutlich machen, was passiert, wenn du Daten mit Nachkommastellen (double oder float) in Datentypen ohne (integer, long) konvertierst, was ohne Informationsverlust nicht möglich ist.
Warum stellst du nicht einfach das Zellformat um, wenn es nur um die Darstellung der Zahlen geht? Oder hast du eine externe Datenbank?
Was gefällt dir an der round()-Funktion denn nicht? Und was meinst du mit „stetigen Bereich“?
zunächsteinmal kann ich in dem Text der Hilfe keinen „internen
Widerspruch“ erkennen. Es wird auf die nächste grade Zahl
gerundet, mit der Annahme, dass 0 auch grade ist.
Nur, dass ´mal nach oben und ´mal nach unten gerundet wird…
Auch dein Beispiel zeigt, dass die Funktion genau das macht,
was in der Hilfe beschrieben ist.
eben
Das dir das Verhalten der Funktionen nicht passt, liegt wohl
daran, dass du sie für einen Zweck nutzt, für den sie nicht
sind. CInt und CLng sind nur dafür da, den Datentyp
umzuwandeln und nicht für’s runden.
Was in der Hilfe in Bezug auf Nachkommastellen steht, soll nur
deutlich machen, was passiert, wenn du Daten mit
Nachkommastellen (double oder float) in Datentypen ohne
(integer, long) konvertierst, was ohne Informationsverlust
nicht möglich ist.
Warum stellst du nicht einfach das Zellformat um, wenn es nur
um die Darstellung der Zahlen geht? Oder hast du eine externe
Datenbank?
math.round und round reagieren genau so
Was gefällt dir an der round()-Funktion denn nicht? Und was
meinst du mit „stetigen Bereich“?
Ich denke, die Wertetabelle, die ich oben schon angesprochen habe, zeigt deutlich, was ich meine. Ich schreibe sie aber gerne noch einmal etwas ausführlicher auf:
x f(x)=round(x/2+0.5)
1 1
2 2
3 2
4 2
5 3
6 4
7 4
8 4
9 5
10 6
11 6
12 6
So etwas mag für Musiker interessant sein, aber sonst …