float increment / float range

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • float increment / float range

    hallo community,

    ich bin etwas neugierig wie man
    A. floats incrementen kann (0.6++ = 0.7 usw)

    B. eine range(0.6,1.6,0.1) mit floats erstellen kann mit zB 0.1er sprüngen

    ich bin mir im klaren dass es da grenzen gibt allein wegen der "Floating point precision"

    und warum die komische frage? (siehe meinen armen und uneleganten code)
    PHP Code:
    $dimension "0.6-1.6"// mal einen wert von "0.4" mal eine range "0.6-1.6"
    $ex explode('-',$dimension);
    $start = (float)$ex[0];
    $end = (float)$ex[1];
    $count = (float)(($end*100)-($start*100))/1000// hab hier kein BC Math benutzt wie man sieht
    $output '';
    for (
    $i $start$i $end+$count$i=$i+$count) {
         
    $output .= $i.PHP_EOL;
    }
    echo 
    '<pre>'.$output.'</pre>';
    /* "0.6-1.6" ergibt
    0.6
    0.7
    0.8
    ...
    1.5
    1.6
    */
    /* "0.9" ergibt
    0.9
    */ 
    undynamisch und unelegant, ich würde es anders machen wenn ich wissen würde wie man floats incrementen kann oder eine float range erstellen kann.
    schon mal jemand was ähnliches gemacht?

    leider hat mir google als auch wie eure forum suchmachine nicht weitergeholfen.

    danke
    Last edited by woozel; 28-12-2011, 21:54. Reason: gelöst

  • #2
    Hallo,

    solange die Intervallgrenzen rationale Zahlen sind, kann man sie auf Integers raufmultiplizieren und die entstehenden Glieder wieder teilen. Beispiel:

    PHP Code:
        $range range(6161);
        
    $factor .1;
        
    $members array_map(function ($x) use ($factor) { return $x $factor; }, $range); 
    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      hallo Amica,
      der "factor" war es, sehr elegant gelöst, (o:
      vielen lieben dank (o:

      Comment

      Working...
      X