如何使NumberFormatter格式成为百分比数字而不“重新解释”它?

示例代码:

$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的浮点数时......

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


茅侃侃
浏览 125回答 1
1回答

开心每一天1111

NumberFormatter 假设在你的情况下,数字介于 0-1 之间 99.99/100 === 0.9999 因此你可以这样使用它:$fmt = new NumberFormatter('sv_SE', NumberFormatter::PERCENT); var_dump($fmt->format(99.99/100));从阅读文档来看,我非常怀疑还有其他方法。
打开App,查看更多内容
随时随地看视频慕课网APP