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?

Path csiph.com!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From "Christoph M. Becker" <cmbecker69@arcor.de>
Newsgroups de.comp.lang.php
Subject Re: var_dump(8.7 <= 8.7) / false?
Date Fri, 16 Nov 2018 14:43:46 +0100
Organization solani.org
Lines 54
Message-ID <psmhid$k0q$1@solani.org> (permalink)
References <61959674.20181115012304@gmx.net> <g54o42FdnvgU1@mid.individual.net> <g54o8cFdnvgU2@mid.individual.net> <06371490.20181115143113@gmx.net> <psjtkk$rud$1@solani.org> <4310540394.20181115155258@gmx.net> <psk79f$36s$1@solani.org> <1652878720.20181115212444@gmx.net>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
X-Trace solani.org 1542375821 20506 127.0.0.43 (16 Nov 2018 13:43:41 GMT)
X-Complaints-To abuse@news.solani.org
NNTP-Posting-Date Fri, 16 Nov 2018 13:43:41 +0000 (UTC)
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0
In-Reply-To <1652878720.20181115212444@gmx.net>
Cancel-Lock sha1:vnrou9JH0igk+QyON6DK8+i5fhc=
X-User-ID eJwFwQkBwDAIA0BLBcIzOZAV/xJ65xYSTIQHfH0pV6kybsnOLjuNvws+pUcwkwqy90ae/EwfHcUQ6Q==
Content-Language de-DE
Xref csiph.com de.comp.lang.php:4441

Show key headers only | 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