Ich bin immer wieder begeistert, wie buggy eine Routine sein kann. Bei der Umwandlung von double-Werten in einen formatierten String, trat folgendes Problem auf: Die Funktion arbeitet korrekt, es sei denn, man gibt einen Wert zwischen 0 und -1 Euro an, dann geht das Vorzeichen verloren. Alles weitere funktioniert korrekt!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | do { // Rest bilden int gruppe = ((long)value)%1000; // nächste Gruppe ermitteln value /= 1000.0; // noch mehr da? if (1.0 < value || -1.0 > value) { // mit Nullen auffüllen // und Punkt setzen result = "." + String(abs(gruppe),true,3) + result; } else { // keine Nullen // Kein Punkt result = String(gruppe,false,3) + result; } } while (1.0 < value || -1.0 > value); |
Na… wer findet den Bug?