如何解决如何解决 PHP 8.x 中关于 NumberFormatter 的这个新错误/行为变化?
在我竭尽全力恢复 PHP 7.4.13 以尝试确定之前,我以为我疯了。它在 PHP 8.x 中已经改变了!
代码:
$a = new \NumberFormatter('en_US',\NumberFormatter::CURRENCY);
$a->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS,8);
$a->setSymbol(NumberFormatter::CURRENCY_SYMBOL,''); // It's empty because I want it "minimal" for a table.
var_dump($a->formatCurrency(0.0043,'BTC'));
PHP 7.4.13 中的输出:
string(6) "0.0043"
PHP 8.0.1 中的输出:
string(11) "BTC 0.0043"
结论:
发生了一些变化。
问题:
如何让 PHP 8.0.1 表现得像以前一样?
说明:
也就是说,以“最小”的方式输出钱款,只用数字。
预测 1:
有人可能会这样回答:“只需手动输出这些情况的数字!”
对此,我回应:必须是货币模式下的数字格式化程序。区域设置/语言之间在如何格式化金额方面存在巨大差异。我需要使用它并告诉它放弃符号。
预测 2:
有人可能会这样回答:“只需 str_replace/preg_replace 符号!简单!”
对此,我回应:并非所有区域设置/语言都使用相同的格式。这是一门包含多种不同格式的完整科学,无法通过简单的字符串替换来解释。
我想把这件事做对,这就是我认为的。直到现在,PHP 8 决定改变这一点。我不确定这是错误还是什么。
研究:
我在这里找不到任何关于 PHP 8 的内容:https://www.php.net/manual/en/numberformatter.formatcurrency.php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。