Re: Inconsistent float to string vs. string to float casting
| From: | Kalle Sommer Nielsen | Date: | Wed, 26 Dec 2018 16:07:17 +0000 |
| Subject: | Re: Inconsistent float to string vs. string to float casting | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-103640@lists.php.net to get a copy of this message | ||
Den ons. 26. dec. 2018 kl. 16.53 skrev Nikita Popov <nikita.ppv@gmail.com>:
>
> On Wed, Dec 26, 2018 at 4:48 PM Christoph M. Becker <cmbecker69@gmx.de>
> wrote:
>
> > Hi!
> >
> > Regarding the decimal separator (aka. decimal point), the behavior of
> > casting float to string is inconsistent with casting string to float.
> > While the former regards the current locale, the latter always expects a
> > decimal point regardless of the locale. This breaks round-trips for
> > locales which use something else than a dot as decimal separator (e.g.
> > German, which uses a comma), for instance:
> >
> > $float = 1/3; // float(0,33333333333333)
> > $string = (string) $float; // string(16) "0,33333333333333"
> > $float = (float) $string; // float(0)
> >
> > As for me, the question is not *if*, but rather *when* and *how* this
> > inconsistency should be resolved. Regarding the *when*, it seems to me
> > we have to wait for the next major version, i.e. PHP 8. Regarding the
> > *how* I tend to prefer the non-locale aware behavior, i.e. float to
> > string conversion should always produce a decimal *point*. Users still
> > can explicitly use number_format() or NumberFormatter if they wish.
> >
> > Thoughts?
> >
>
> Yes, please. Locale-sensitive library functions are bad enough, but core
> language behavior should *never* be locale-sensitive.
>
> I'm definitely in favor of making float to string casts locale-independent
> in PHP 8.
I'm in the same boat here. I remember we had some interesting
behaviorial differences on a language level too[1] (which seems to
also have maybe resurfaced after reading the newest comments).
[1] https://bugs.php.net/bug.php?id=18556
--
regards,
Kalle Sommer Nielsen
kalle@php.net