Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4441

Re: var_dump(8.7 <= 8.7) / false?

From "Christoph M. Becker" <cmbecker69@arcor.de>
Newsgroups de.comp.lang.php
Subject Re: var_dump(8.7 <= 8.7) / false?
Date 2018-11-16 14:43 +0100
Organization solani.org
Message-ID <psmhid$k0q$1@solani.org> (permalink)
References (3 earlier) <06371490.20181115143113@gmx.net> <psjtkk$rud$1@solani.org> <4310540394.20181115155258@gmx.net> <psk79f$36s$1@solani.org> <1652878720.20181115212444@gmx.net>

Show all headers | View raw


Am 15.11.2018 um 21:24 schrieb Stefan Mayer:

> Neuer Versuch mit bccomp. Wieder funktioniert es scheinbar.
> 
> ```
> function buildRange($min, $max, $step, $zero = true)
> {
>     $values = [];
>     $value = $min;
> 
>     /**
>      * https://secure.php.net/manual/de/function.bccomp.php
>      *  0 wenn beide Operatoren gleich sind
>      *  1 wenn left_operand größer ist als right_operand,
>      *  -1 sonst
>      */
>     while (1 !== bccomp((string)$value, (string)$max, 2)) {
>         if (false === $zero && 0 === bccomp((string)$value, '0',2)) {
>             $value += $step;
>             continue;
>         }
>         $values[] = $value;
>         $value+=$step;
>     }
>     return $values;
> }
> print_r(buildRange(8.3, 8.7, .4));
> print_r(buildRange(7.9, 8.7, .4));
> print_r(buildRange(-1.25, 2.75, .5, false));
> print_r(buildRange(-1, 1, .5, false));
> print_r(buildRange(-1, 1, .5, true));
> ```
> 
> OK? Einwände? Probleme?

Sollte so funktionieren. Ein paar Anregungen:

* Man könnte bccomp() als typische Vergleichsfunktion verwenden, die <
0, == 0 oder > 0 zurückliefert. Also statt 1 !== eben 0 >= schreiben.

* Man könnte buildRange() gleich Strings übergeben, um jedwedes Problem
mit Fließkommazahlen zum umschiffen. Das ist außerdem etwas effizienter.

* Man könnte hier auf die (string) Casts verzichten. Die Wandlung nimmt
PHP ohnehin automatisch vor.

* Man könnte automatisierte Tests schreiben. Sollte sich doch ein Fehler
in der Funktion finden, dann kann man diesen korrigieren, und die Tests
zeigen dann, ob alles was vorher funktioniert hat noch immer
funktioniert. Und natürlich für den Fehler gleich einen passenden Test
ergänzen.

-- 
Christoph M. Becker

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 01:23 +0100
  Re: var_dump(8.7 <= 8.7) / false? Arno Welzel <usenet@arnowelzel.de> - 2018-11-15 09:12 +0100
    Re: var_dump(8.7 <= 8.7) / false? Arno Welzel <usenet@arnowelzel.de> - 2018-11-15 09:15 +0100
      Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 14:31 +0100
        Re: var_dump(8.7 <= 8.7) / false? "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-11-15 14:51 +0100
          Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 15:52 +0100
            Re: var_dump(8.7 <= 8.7) / false? "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-11-15 17:36 +0100
              Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 18:02 +0100
              Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 21:24 +0100
                Re: var_dump(8.7 <= 8.7) / false? "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-11-16 14:43 +0100
                Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-16 21:26 +0100
                Re: var_dump(8.7 <= 8.7) / false? "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-11-17 23:49 +0100
                Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-19 21:15 +0100
        Re: var_dump(8.7 <= 8.7) / false? Claus Reibenstein <4spamersonly@kabelmail.de> - 2018-11-15 19:34 +0100
          Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 21:06 +0100
  Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-15 09:13 +0100
    Re: var_dump(8.7 <= 8.7) / false? "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-11-15 12:22 +0100
  Re: var_dump(8.7 <= 8.7) / false? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2018-11-17 20:55 +0100
    Re: var_dump(8.7 <= 8.7) / false? Stefan Mayer <meniskus@gmx.net> - 2018-11-19 20:52 +0100

csiph-web