gpt4 book ai didi

php - 如何使用 Twig 的 Intl 扩展提高百分比格式的小数精度?

转载 作者:行者123 更新时间:2023-12-02 00:00:54 24 4
gpt4 key购买 nike

我有一个 4 位小数,小数位数为 4。(最大值为 0.9999,最小值为 0.0000)

我正在使用 Twig 及其 intl extension 。当我想渲染百分比数字时,小数点会四舍五入。

{% set decimal = 0.0850 %}
{{ decimal|localizednumber('decimal','double','fr-fr') }} //WILL OUTPUT "0,085"
{{ decimal|localizednumber('decimal','double','zh-cn') }} //WILL OUTPUT "0.085"
{{ decimal|localizednumber('decimal','double','ar-bh') }} //WILL OUTPUT "٠٫٠٨٥"
{{ decimal|localizednumber('percent','double','fr-fr') }} //WILL OUTPUT "8 %"
{{ decimal|localizednumber('percent','double','zh-cn') }} //WILL OUTPUT "8%"
{{ decimal|localizednumber('percent','double','ar-bh') }} //WILL OUTPUT "% ٨"

我想看看8,5 %法语,8.5%中文和% ٨٫٥阿拉伯语。

我尝试添加double参数,但不会改变精度。

当我使用 Symfony 时,我尝试以数字格式声明 2 位小数:

<!-- lang-yml -->
#config/twig.yaml
twig:
#...
number_format:
decimals: 2

看来 Intl 扩展正在覆盖这些设置。

我知道我可以做类似的事情

{{ (decimal*100)|localizednumber('decimal','double')}}% 

但是%在某些语言中,符号可以位于结果之前,在法语中,% 之前有一个不间断空格符号。

你看到我的错误了吗?你有解决办法吗?

最佳答案

无法直接使用您正在使用的 Twig Intl 扩展来完成。

它没有设置精度的参数,它只是使用您选择的格式样式实例化 NumberFormatter ,并将其用于 format()你的值(value)。

查看代码here .

<小时/>

还有另一个扩展,它有更多选项:https://github.com/twigphp/intl-extra

通过这个,您可以指定 NumberFormatter 支持的所有属性,如图 here .

你可以像这样使用它:

{% set decimal = 0.0850 %}
{{ decimal|format_number(style='percent', locale='fr', {min_fraction_digit: 1}) }}
<小时/>

或者,您可以利用 NumberFormatter 编写自己的扩展。

NumberFormatter::PERCENT 默认使用的模式是 #,##0 %,不包括小数精度。您可以按照 these rules 定义自己的模式确实如此。

或者直接调用setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 1)来指定您感兴趣的最小十进制数。

例如:

$formatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 1);

最终的实现取决于您,如果您需要在 Twig 模板中使用它,则必须 create your own (官方 Symfony docs)。

查看更多示例 here .

关于php - 如何使用 Twig 的 Intl 扩展提高百分比格式的小数精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com