【问题标题】:How do I make NumberFormatter format a percent number without "reinterpreting" it?如何使 NumberFormatter 格式化百分比数字而不“重新解释”它?
【发布时间】:2020-05-10 09:56:11
【问题描述】:

示例代码:

$fmt = new NumberFormatter('sv_SE', NumberFormatter::PERCENT);
var_dump($fmt->format(99.99));

预期输出:

string(9) "99,99 %"

实际输出:

string(9) "9 999 %"

分析:

我一定是“错过了什么”。我已经有了百分比数字(九十九点九十九),我只想为给定的语言+语言环境组合适当地输出它。例如,在美国,它是“99.99%”,小数点是句点,百分比数字和百分号之间没有空格,而在瑞典,它是“99,99 %”,小数点是逗号和之间的空间。其他语言环境/语言中可能还有许多其他规则,我还没有遇到过。

我确实希望 PHP 以任何方式“进一步处理”我输入的数字。已经完成了”。无需更多处理。

坦率地说,我什至不明白为什么 PHP 将它变成“9999”,而它显然是作为 99.99 的浮点数......

是否有某种隐藏选项可以关闭对号码的“进一步处理”?

【问题讨论】:

    标签: php number-formatting percentage


    【解决方案1】:

    NumberFormatter 在您的情况下假设数字介于 0-1 之间 99.99/100 === 0.9999 因此你可以这样使用它:

    $fmt = new NumberFormatter('sv_SE', NumberFormatter::PERCENT);
    var_dump($fmt->format(99.99/100));
    

    通过阅读the documentation,我非常怀疑还有其他方法。

    【讨论】:

    • 谢谢。其实我没有想过这个。现在看起来很明显,但是......我仍然不明白他们为什么期望这样一个数字,或者为什么手册中没有提到它,但至少我“让它工作了”。
    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2011-11-01
    • 2020-10-29
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多