Anfängerfrage

Dieses Thema im Forum "Mac OS Entwickler, Programmierer" wurde erstellt von Unixx, 22.09.2006.

  1. Unixx

    Unixx Thread Starter MacUser Mitglied

    Beiträge:
    549
    Zustimmungen:
    19
    Mitglied seit:
    25.08.2004
    Hallo,
    ich habe eine kleine Cocoa Anwendung geschrieben.
    In meinem Programmfenster befindet sich ein TextField und ein Button.
    Nun soll das Programm, sobald man den Button drückt, den Wert aus dem TextField auslesen und 10 dazu addieren.

    Gebe ich in das Textfield 3 ein kommt auch 13 raus und bei 3,5 13,5 - soweit so gut. Gebe ich nun aber 3,6 ein bekomme ich als Ergebnis 13,60000038146973 oder bei der Eingabe von 4,4 bekomme ich 14,39999618.
    Woran kann das liegen?


    - (IBAction)klickMich:(id)sender
    {
    float a;
    a = 0;
    a = [x1 floatValue];
    a = a +10;
    [textField setFloatValue:a];
    }

    @end
     
    Zuletzt bearbeitet: 22.09.2006
  2. Sophokles

    Sophokles MacUser Mitglied

    Beiträge:
    60
    Zustimmungen:
    0
    Mitglied seit:
    22.08.2006
    Yo, chicos!
    Ich würde mal vermuten, daß das am Unterschied zwischen Binär- und Dezimalsystem liegt.
    Eine einfache Dezimalzahl wie 0,1 hat im Binärsystem unendlich viele Nachkommastellen. So wie 1/3 im Dezimalsystem zum Beispiel.

    Nimm statt float mal double oder schicke eine Rundungsfunktion drüber.

    Sophokles
     
  3. Unixx

    Unixx Thread Starter MacUser Mitglied

    Beiträge:
    549
    Zustimmungen:
    19
    Mitglied seit:
    25.08.2004
    Danke, jetzt wo ich double anstatt von float verwende funktioniert es.
     
  4. Relampago

    Relampago MacUser Mitglied

    Beiträge:
    112
    Zustimmungen:
    0
    Mitglied seit:
    26.06.2003
    doppelte genauigkeit :)
     
Die Seite wird geladen...

Diese Seite empfehlen