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


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

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-17 23:49 +0100
Organization solani.org
Message-ID <psq5t8$4an$1@solani.org> (permalink)
References (5 earlier) <4310540394.20181115155258@gmx.net> <psk79f$36s$1@solani.org> <1652878720.20181115212444@gmx.net> <psmhid$k0q$1@solani.org> <958057513.20181116212645@gmx.net>

Show all headers | View raw


Am 16.11.2018 um 21:26 schrieb Stefan Mayer:

> Christoph M. Becker am Freitag, 16. November 2018 (14:43):
> 
>> * Man könnte hier auf die (string) Casts verzichten. Die Wandlung nimmt
>> PHP ohnehin automatisch vor.
> 
> Wenn ich das im PHP-Quelltext selbst verifizieren möchte, wo muss ich da
> schauen? Wo finde ich den auf github.com/php die entsprechende Stelle?

Ausgehend vom Parameter-Parsing von bccomp()[1], kommt man über
zend_parse_arg_str()[2] zu zend_parse_arg_str_weak()[3] wo alles was
sich irgendwie in eine Zeichenkette konvertieren lässt, eben umgewandelt
wird (und alles andere einen Fehler ergibt).

> Nächster Einschlag:
> 
> Rauskommen sollen Gleitkommazahlen, damit man die z.B. number_format behandeln
> kann.

Hm, wenn du zwischenzeitlich doch Gleitkommazahlen haben möchtest, dann
erscheint mir die BCMath-Lösung fraglich, und du fährst mit der Addition
des halben Intervalls wie von Claus vorgeschlagen[4], oder der
Integer-Schleife wie von Peter vorgeschlagen[5], vermutlich besser. Ich
frage mich allerdings, ob du number_format() wirklich brauchst. Ein
wenig Zeichenkettenmanipulation könnte es auch tun (z.B. wenn du nur den
Dezimalpunkt in ein -komma ändern willst).

>> * 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.
> 
> Das hört sich gut an. Weiß aber grad nicht wie genau.

Siehe z.B. <https://phpunit.de/>.

Noch der Vollständigkeit halber erwähnen möchte ich die range() Funktion
von PHP, die eigentlich so ziemlich genau das macht wie dein erster
Ansatz, und auch das gleiche Problem bezüglich Gleitkommazahlen hat.
Immerhin meldet diese aber zumindest in aktuellen PHP-Versionen einen
Fehler, wenn es zu solchen Gleitkommaproblemen kommt ("step exceeds the
specified range").

[1]
<https://github.com/php/php-src/blob/php-7.3.0RC5/ext/bcmath/bcmath.c#L517-L518>
[2] <https://github.com/php/php-src/blob/php-7.3.0RC5/Zend/zend_API.h#L1187>
[3] <https://github.com/php/php-src/blob/php-7.3.0RC5/Zend/zend_API.c#L514>
[4] <news:g55shjFliudU1@mid.individual.net>
[5] <news:slrnpv0sho.s8s.hjp-usenet3@hrunkner.hjp.at>

-- 
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