Matt, any replies to this?
-A
On Dec 22, 2006, at 9:53 AM, Andrei Zmievski wrote:
Especially since POSIX locales are deprecated in Unicode mode. I
really don't think printf() should use locale-aware formatting by
default.
-Andrei
On Dec 22, 2006, at 5:42 AM, Matt Wilmas wrote:
Hi all,
A couple questions regarding the printf changes (internal and
userland) a
couple weeks ago...
Now the internal %f, %g, and %G are locale-aware, which they weren't
before,
right? Is this how they're supposed to be and simply weren't before?
(The
locale changes caused Bug #39873 with number_format(), etc.) In
userland
*printf(), %f (as always), %g, and %G are also locale-aware, but, like
"internally," %e and %E are not? None of it really affects me, just
wanting
to verify desired behavior. :-)
Second thing is about the g/G specifiers, especially now that they're
in
userland. It's my understanding that scientific notation should be
used if
the exponent is < -4 or >= the precision. So why with printf('%.6g',
1234567890) do I get "1234570000" instead of the expected
"1.23457e+9"? The
former just looks wrong. (One more digit triggers scientific
notation.)
Using:
ini_set('precision', 6);
echo (double) 1234567890;
it comes out as expected, both on Windows (where zend_sprintf()
appears to
use the system's sprintf()), and on my Linux host.
The same issue exists in Unicode mode, with double->Unicode
conversion,
which makes things different depending on unicode.semantics...
It's a simple fix to make g/G work the way I thought (and think) they
should. Thoughts?
Thanks,
Matt
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php