|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2020-02-02 10:44 UTC] cmb@php.net
Description:
------------
If ::format() is called with ::TYPE_DEFAULT, but the value is an
object which implements cast to number, the type is erroneously
assumed to be ::TYPE_INT32.
This issue has been reported by googleguy@php.net in r11.
Test script:
---------------
<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::SPELLOUT);
var_dump($fmt->format(gmp_init('823749273428379492374')));
?>
Expected result:
----------------
string(157) "eighteen quadrillion fourteen trillion three hundred ninety-eight billion five hundred nine million four hundred eighty-one thousand nine hundred eighty-four"
Actual result:
--------------
string(108) "minus one billion one hundred twenty-nine million four hundred forty-seven thousand four hundred twenty-four"
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 09:00:01 2025 UTC |
Well, the expected result above is obviously wrong, but apparently, we're additionally hitting an ICU4C bug here[1]. Anyhow, using ::PATTERN_DECIMAL instead of ::SPELLOUT, we get string(11) "-1129447424" while we should expect string(21) "823749273428379400000" [1] <https://unicode-org.atlassian.net/browse/ICU-8223>