Inconsistent float to string vs. string to float casting

From: Date: Wed, 26 Dec 2018 15:47:45 +0000
Subject: Inconsistent float to string vs. string to float casting
Groups: php.internals 
Request: Send a blank email to internals+get-103638@lists.php.net to get a copy of this message
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

« previous php.internals (#103638) next »