Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:101444 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 25510 invoked from network); 29 Dec 2017 17:21:38 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 29 Dec 2017 17:21:38 -0000 Authentication-Results: pb1.pair.com smtp.mail=lists@rhsoft.net; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=lists@rhsoft.net; sender-id=pass Received-SPF: pass (pb1.pair.com: domain rhsoft.net designates 91.118.73.15 as permitted sender) X-PHP-List-Original-Sender: lists@rhsoft.net X-Host-Fingerprint: 91.118.73.15 mail.thelounge.net Received: from [91.118.73.15] ([91.118.73.15:25485] helo=mail.thelounge.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BB/6B-47595-0A9764A5 for ; Fri, 29 Dec 2017 12:21:38 -0500 Received: from srv-rhsoft.rhsoft.net (Authenticated sender: h.reindl@thelounge.net) by mail.thelounge.net (THELOUNGE MTA) with ESMTPSA id 3z7YKS5ZbnzXMR for ; Fri, 29 Dec 2017 18:21:32 +0100 (CET) To: internals@lists.php.net References: <72392123-d37b-26df-6886-218f48205f8a@fleshgrinder.com> <58A5ABDF-AA25-46D4-83E7-4DE72E3DFF5E@gmail.com> <757270790.33iDQ9MZ2V@vulcan> Message-ID: <52ca4e64-bb44-ba1d-4ba7-b0706915d709@rhsoft.net> Date: Fri, 29 Dec 2017 18:21:32 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: de-CH Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] [RFC] [DISCUSSION] Scalar Pseudo-type From: lists@rhsoft.net ("lists@rhsoft.net") Am 29.12.2017 um 18:18 schrieb Fleshgrinder: > 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, ...) no, when i accept "int|float" i don't get something converted at all and i can handle the cases different - when it#s silently casted to a float i have no way to know it was a int at call time