Sonntag, 6. November 2011

CyanogenMod on Defy

Da es ja auch nach Googles Motorola-Kauf nicht absehbar ist, dass das Defy weitere Updates erhält, hab ich jetzt doch auf CyanogenMod gewechselt. Motoblur geht mir nicht wirklich ab, ansonsten läuft es deutlich flüssiger, Akkulaufzeit ist etwa gleich... - tendenziell etwas länger, aber mit herumspielen hab ich's auch schon nach einem knappen Tag geleert. War aber davor auch schon in der Größenordnung. Würde mal sagen das Update ist empfehlenswert - und wenn man sich mal über Defy2ndInit, ROMManager usw. orientiert hat, geht's auch recht flott.

In diesem Thread findet man so ziemlich alles was man braucht.

Math.Round() und seine Tücken

Ein nicht unübliches Thema: man rechnet ein wenig mit Fließkommazahlen (double, float, decimal) und da eine leichte Ungenauigkeit in deren Natur liegt, wird vor dem Vergleich gerundet. Schönerweise gibt es in C# dafür die Methode z.B. Math.Round(double). Die Überraschung folgt erst, wenn man etwa in einem Test dann etwas in der folgenden Art schreibt:

Assert.AreEqual(5, Math.Round(4.5, 0));

Also Runden auf ganze Zahlen. Nachdem das fehlgeschlagen hat, wundert sich der Entwickler natürlich. Und schlägt nach. Aha, es gibt also eine Überladung dieser Methode, bei der die Rundungsmethode festgelegt werden kann.

Assert.AreEqual(5, Math.Round(4.5), MidPointRounding.AwayFromZero);

Das funktioniert. Allerdings hätte ich erwartet, dass der Standard das kaufmännische Runden ist...