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

4 c0d3rz 0n7y!

Jan 0
geschätzte Lesedauer: < 1 Minute

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
{
&nbsp;&nbsp;// Rest bilden
&nbsp;&nbsp;int gruppe = ((long)value)%1000;
&nbsp;&nbsp;// nächste Gruppe ermitteln
&nbsp;&nbsp;value /= 1000.0;
&nbsp;&nbsp;// noch mehr da?
&nbsp;&nbsp;if (1.0 &lt; value || -1.0 &gt; value)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;// mit Nullen auffüllen
&nbsp;&nbsp;&nbsp;&nbsp;// und Punkt setzen
&nbsp;&nbsp;&nbsp;&nbsp;result = "." + String(abs(gruppe),true,3) + result;
&nbsp;&nbsp;}
&nbsp;&nbsp;else
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;// keine Nullen
&nbsp;&nbsp;&nbsp;&nbsp;// Kein Punkt
&nbsp;&nbsp;&nbsp;&nbsp;result = String(gruppe,false,3) + result;
&nbsp;&nbsp;}
}
while (1.0 &lt; value || -1.0 &gt; value);

Na… wer findet den Bug?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Hinweis von Real Cookie Banner