Re: [RFC] [DISCUSSION] Scalar Pseudo-type
| From: | Fleshgrinder | Date: | Fri, 29 Dec 2017 17:18:05 +0000 |
| Subject: | Re: [RFC] [DISCUSSION] Scalar Pseudo-type | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-101443@lists.php.net to get a copy of this message | ||
On 12/29/2017 4:09 PM, lists@rhsoft.net wrote:
>
> Am 29.12.2017 um 13:08 schrieb Fleshgrinder:
>> What is the use case for
int|float? I mean, if f is able to
>> process a
>> float than f is able to process an
>> int and since int is already
>> automatically changed to a float, well, you're done
>
> just read the mass of bugreports caused by float answered with the
> default paragraph below and you know why you don't want your int-values
> silently converted to a float
>
> 7 may become to 7.000000000000000001 or something similar and "$x === 7"
> may also fail wile the argument was int 7
> ________________________
>
> Floating point values have a limited precision. Hence a value might
> not have the same string representation after any processing. That also
> includes writing a floating point value in your script and directly
> printing it without any mathematical operations.
>
> If you would like to know more about "floats" and what IEEE
> 754 is, read this:
> http://www.floating-point-gui.de/
>
Obviously but this does not answer anything. You expect an int or a
float, hence, you need to be prepared to handle floats. Your 7 example
is the best illustration. You need to handle those situations in your
script with the appropriate strategy for your domain (rounding,
truncation, floor, ...).
--
Richard "Fleshgrinder" Fussenegger