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


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

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

From Arno Welzel <usenet@arnowelzel.de>
Newsgroups de.comp.lang.php
Subject Re: var_dump(8.7 <= 8.7) / false?
Date 2018-11-15 09:15 +0100
Message-ID <g54o8cFdnvgU2@mid.individual.net> (permalink)
References <61959674.20181115012304@gmx.net> <g54o42FdnvgU1@mid.individual.net>

Show all headers | View raw


Arno Welzel:

> Stefan Mayer:
> 
>> Hallo Leute,
>>
>> eine kleine Funktion die Werte zwischen "min" und "max"
>>
>> ```
>> <?php
>> function f($min, $max, $step) {
>>     $values = [];
>>     for ($i = $min; $i<=$max; $i+=$step) {
>>         $values[] = $i;
>>     }
>>     return $values;
>> }
>> ```
>>
>> Eigentlich dachte ich das funktioniert, aber irgendwas funktioniert überhaupt
>> nicht.
>>
>> Wieso unterscheidet sich das Ergebnis z.B. bei diesen beiden?
>>
>> print_r(f(11.3, 11.7, .4)); // 11.7 fehlt
>> print_r(f(20.3, 20.7, .4)); // OK
> 
> 
> Fließkommazahlen für Vergleiche zu benutzen, ist generell problematisch.
> 
> Siehe auch:
> 
> <https://stackoverflow.com/questions/3148937/compare-floats-in-php>
> 
> Zitat:
> 
> "If you do it like this they should be the same. But note that a
> characteristic of floating-point values is that calculations which seem
> to result in the same value do not need to actually be identical. So if
> $a is a literal .17 and $b arrives there through a calculation it can
> well be that they are different, albeit both display the same value.
> 
> Usually you never compare floating-point values for equality like this,
> you need to use a smallest acceptable difference:
> 
> if (abs(($a-$b)/$b) < 0.00001) {
>   echo "same";
> }
> 
> Something like that."

Ingrid weist mich noch darauf hin, dass das auch in der Dokumentation
von PHP erwähnt ist:

<http://php.net/manual/en/language.types.float.php>


-- 
Arno Welzel
https://arnowelzel.de

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