2011-01-12 14 views
0

Kann jemand die beste Logik/Methode zum Inkrementieren von Gleitkommazahlen erklären?Dezimalzahl, Fließkommazahlen

Zum Beispiel, wenn wir Dezimalzahl assume beginnend 2,0, so dass die nächsten Punkte sollen automatisch erhalten Zahl entsprechend sagen, 2,01, 2,02, 2,03, ....., 2.09, 2.10, 2.11 .. usw.

Aber was ist die Startnummer ist 2.1, was wäre die nächste Sequenz:

Ist es? 2.11, 2.12, 2.13, 2.14, ..... 2.19, 2.20 etc ...?

Ich bin logisch richtig? Ich bin verwirrt. Bitte helfen Sie.

+2

Es gibt keine "besten" hier - es hängt davon ab, was Sie Anforderungen sind. (Es ist auch nicht ganz klar - verwenden Sie einen echten Dezimal-Fließkommatyp? Verwenden Sie keinen binären Fließkommatyp für so etwas.) –

+0

Ja. Ich erkannte, dass meine Anwendung genau die gleiche Sequenz benötigt, die ich oben gepostet habe. Ich habe die Lösung. Danke für Ihre Hilfe. – user458135

Antwort

2

Es hängt ganz davon ab, was die Anwendung benötigt. Müssen Sie um Hundertstel zählen? Wenn ja, dann machen diese Sequenzen Sinn.

Rundungsfehler zu vermeiden, können Sie den Anfangswert speichern möchten, die Anzahl der Schritte und die Schrittweite, wie in:

 float start = 2.0; 
     float increment = 0.01; 

     for (int i = 0; i < 10; i++) 
     { 
      printf("%f ", start + increment * i); 
     } 
+0

Ja. Genau das habe ich gesucht. Meine Anwendung benötigt die gleiche Sequenz wie in meinem Post. Danke Daniel. – user458135

-1

Ich denke, es wäre willkürlich durch das, was Sie darstellen möchten, definiert. In Software-Versionen zum Beispiel ist es in Ordnung, 7.9, 7.10, 7.11 und so weiter zu haben, und Sie werden immer noch wissen, dass 7.10 größer als 7.9 ist. Natürlich würden Sie ihnen eine spezielle Behandlung geben, die Standardarithmetik würde nicht gelten.

+1

7.10 ist größer als 7,9? Woher? –

+0

7.10 ist die Version nach 7.9 veröffentlicht. – Marcelo

-1

„Der Zuwachs von Float-Wert durchgeführt werden sollte durch einen Inkrementoperator ". Aber das Ding ist nicht möglich, weil Inkrement-Operator nur auf die Zahl vor den Dezimalstellen funktioniert. Wenn der Inkrementoperator auf Float angewendet wird, lautet die Wertefolge 0,1, 1,1, 2,1, 3,1 usw.