Bug #77278 [Ver]: floatval(strval(value)) truncates if locale's decimal_point isn't a period
| From: | requinix@php.net | Date: | Mon, 10 Dec 2018 21:41:36 +0000 |
| Subject: | Bug #77278 [Ver]: floatval(strval(value)) truncates if locale's decimal_point isn't a period | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-218381@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77278&edit=1
ID: 77278
Updated by: requinix@php.net
Reported by: spam2 at rhsoft dot net
Summary: floatval(strval(value)) truncates if locale's
decimal_point isn't a period
Status: Verified
Type: Bug
Package: Scripting Engine problem
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
You can't blame PHP for Tidy's problem. If they change locale (already a dangerous
operation since it's not thread-safe) and then don't revert it to the previous setting
when they're done, that's their fault.
Previous Comments:
------------------------------------------------------------------------
[2018-12-10 21:33:13] spam2 at rhsoft dot net
working as intended?
a random linked library calls locale and the whole behavior of internal php typecast changes for
every follow-up code in a PHP application is intended? really?
------------------------------------------------------------------------
[2018-12-10 21:29:50] nikic@php.net
I think we should get rid of the locale-dependent float to string cast in PHP 8, but for now this is
working as "intended". We should definitely *not* make string to float cast
locale-sensitive as well, that would only make a bad situation worse.
------------------------------------------------------------------------
[2018-12-10 19:37:59] requinix@php.net
var_dump(setlocale(LC_NUMERIC, "de_DE", "German_Germany"));
var_dump(1 / 2); float 0,5
var_dump(strval(1 / 2)); // string "0,5"
var_dump(floatval(strval(1 / 2))); // float 0
------------------------------------------------------------------------
[2018-12-10 18:47:07] spam2 at rhsoft dot net
> but that there's an inconsistency between casting floats
> to strings and strings to floats when it comes to the decimal symbol?
that's exactly the point - oustide of format functions my locale de_DE.UTF-8 normally
don't matter and shouldn't do so but afer a simple tidy call anywhere every following php
code doing type casts on float values becomes a lottery
------------------------------------------------------------------------
[2018-12-10 18:40:04] requinix@php.net
I assume you're not trying to use this bug report for Tidy changing locale but that
there's an inconsistency between casting floats to strings and strings to floats when it comes
to the decimal symbol?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=77278
--
Edit this bug report at https://bugs.php.net/bug.php?id=77278&edit=1