|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2020-02-02 10:44 UTC] [email protected]
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 [email protected] 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-2026 The PHP GroupAll rights reserved. |
Last updated: Tue Mar 17 10:00:01 2026 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>