【问题标题】:Velocity NumberTools formatterVelocity NumberTools 格式化程序
【发布时间】:2015-10-20 13:54:48
【问题描述】:

我需要使用逗号作为小数分隔符和点作为千位分隔符来格式化具有速度的数字。

我检查了其他答案,但我只能找到这个: How to use Velocity NumberTool for big currency numbers 这对我的目的没有用,因为如果我想使用不同的样式,我需要创建不同的功能。

我还检查了 Velocity 文档并使用了不同类型的模式,但它们都不适合我:

context.put("numberTool", new NumberTool());

$numberTool.format('#.###,00', $val)
$numberTool.format('###.###,00', $val)
$numberTool.format('#.###,##', $val)
$numberTool.format('###.###,##', $val)

如果可能的话,有人可以帮助我找到一种使用速度数字格式的方法吗?

提前致谢。

【问题讨论】:

    标签: velocity number-formatting formatter


    【解决方案1】:

    您所要做的就是更改 NumberTool 的语言环境。例如:

    [java]
    NumberTool numberTool = new NumberTool();
    numberTool.setLocale(Locale.FRENCH);
    context.put("numberTool", numberTool);
    
    [vtl]
    $numberTool.format('#,###.00', $val)
    $numberTool.format('###,###.00', $val)
    $numberTool.format('#,###.##', $val)
    $numberTool.format('###,###.##', $val)
    

    【讨论】:

    • ## 是 Velocity 中的评论。
    • @Alex78191 希望不在文字引用的字符串中。你试过了吗?
    【解决方案2】:

    否则,如果您无权更改语言环境,您可以通过 String 做另一个技巧。

    -- 将 50000.00 美元变为 50,000.00 美元(我们需要转换为双倍) #set($NumberFormatter = "") $NumberFormatter.format("$%,.2f",$convert.toDouble($someNumberWithDigits)) -- 将 50000 美元变为 50,000 美元并且没有小数(我们需要转换为 int) #set($NumberFormatter = "") $NumberFormatter.format("$%,d",$convert.toInteger($someNumberWithDigits))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 2011-06-08
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      相关资源
      最近更新 更多