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

Des Rätsels Lösung

Jan 0

Letztens hatte ich ja einen Beitrag mit einem kleinen Programmierrätsel geschrieben. Hier nochmal kurz die Problembeschreibung: Die Routine schneidet bei double-Werte zwischen 0 und -1 das Vorzeichen weg. Nachdem ich die Routine debuggt habe, konnte ich den Fehler auf genau eine Zeile festnageln.

1
int gruppe = ((long)value)%1000;

Spielen wir das doch mal für folgende Werte durch:

value (double)gruppe (int)
50.050
5.05
0.50
00
-0.50
-5.0-5
-50.0-50

Das Problem ist: Wenn man einen double-Wert auf long castet, geht der Nachkommabereich verloren. Wenn der aber entscheidend für das Vorzeichen ist, wie z.B. bei -0.5, dann geht auch das Vorzeichen verloren, denn -0 gibt es nicht!

Also blieb mir nichts weiter übrig, als den Wertebereich abzufragen und ein Flag zu setzen, dass ich nach der Konvertierung abfrage und dann manuell ein negatives Vorzeichen in den String einbaue.

    Schreibe einen Kommentar

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