On Wed, Dec 26, 2018 at 4:48 PM Christoph M. Becker <cmbecke...@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.

Nikita

Reply via email to