Drücke „Enter”, um zum Inhalt zu springen.

4 c0d3rz 0n7y!

Jan 0

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?

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.