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?

-- 
Christoph M. Becker

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to