Shogun: for-Schleife anstatt i++ i+0.1

Hallo zusammen,
kann mir jemannd erklären warum das nicht klappt?

  
for ($i=0; $i<1; $i+0.1) {  
    echo $i;  
}  

Er (da sooft Fragen kommen "WER?", der PHP-Interpreter) müsste doch eigentlich 0.1,0.2,0.3 usw. ausgeben. Oder funktioniert die for-Schleife nur mit ++.

Danke Euch und wünsche einen schönen Karneval.

Grüße
Shogun

  1. [latex]Mae  govannen![/latex]

    Er (da sooft Fragen kommen "WER?", der PHP-Interpreter) müsste doch eigentlich 0.1,0.2,0.3 usw. ausgeben. Oder funktioniert die for-Schleife nur mit ++.

    du suchst +=

    Cü,

    Kai

    --
    Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
    1. du suchst +=

      Danke Dir tausendmal!
      Die Lösung kann manchmal so einfach sein.

      DANKE
      Shogun

      1. Hallo,

        du suchst +=

        Danke Dir tausendmal!
        Die Lösung kann manchmal so einfach sein.

        Ich gebe noch zu bedenken, dass die Zahl 0.1 nicht exakt dargestellt werden kann im Computer, wenn man Gleitkommaarithmetik verwendet, wie PHP es tut - 1 dagegens schon. Wenn Du also 10 mal 0.1 auf eine Zahl addierst ist das nicht das gleiche, als wenn Du 1 auf die Zahl addierst:

        $zahl = 4;  
        printf ("%.20f<br />\n", $zahl + 1);  
        printf ("%.20f<br />\n", $zahl + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1);
        

        Ergibt:

        5.00000000000000000000
        4.99999999999999644729

        Viele Grüße,
        Christian

  2. 你好 Shogun,

    kann mir jemannd erklären warum das nicht klappt?

    for ($i=0; $i<1; $i+0.1) {
        echo $i;
    }

      
    Du hast die Wertzuweisung vergessen. So gehts:  
      
    ~~~php
    for($i=0; $i<1; $i=$i+0.1) {  
      echo $i;  
    }
    

    Die Post- und Präfix-Inkrement-Operatoren modifizieren die Variable implizit, $i+0.1 tut das nicht, $i bleibt also immer bei 0.

    再见,
     克里斯蒂安

    --
    http://wwwtech.de/
    IRC-Clients und Irssi-Scripting | Flyspray
    Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
    1. @@Christian Kruse:

      for($i=0; $i<1; $i=$i+0.1) {

      echo $i;
      }

        
      Wofür man, wie Kai schon sagte, kürzer schreiben kann  
      ~~~php
      for ($i = 0; $i < 1; $i += 0.1)  
      {  
        echo $i;  
      }
      

      Live long and prosper,
      Gunnar

      --
      Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)