如何在没有 "reinterpreting" 的情况下将 NumberFormatter 格式化为百分比数字?

How do I make NumberFormatter format a percent number without "reinterpreting" it?

示例代码:

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

预期输出:

string(9) "99,99 %"

实际输出:

string(9) "9 999 %"

分析:

我一定是"missing something"。我已经有了百分比数字(九十九点九十九),我想要的只是针对给定的语言 + 语言环境组合适当地输出它。例如,在美国,它是“99.99%”,小数点前有句点,百分号和百分号之间没有 space,而在瑞典,它是“99,99 %”,带有逗号对于小数点和一个space之间。其他 locales/language 中可能还有许多我还没有遇到的其他规则。

想要PHP到"further process"我以任何方式喂它的号码。已经 "done"。无需更多处理。

坦率地说,我什至不明白为什么 PHP 将其明确表示为浮点数 99.99 而将其变成“9999”...

是否有某种隐藏选项可以关闭这个 "further processing" 号码?

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

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

从阅读 the documentation 我非常怀疑是否还有其他方法。