如何格式化Velocity模板中的数字?

Raj*_*ula 14 java velocity

我在速度模板中获取了一个java对象.该对象有一个double值,我想格式化为2位小数并将其显示在我的模板中.

我得到一个对象的类是这样的

Class Price
{
double value;
String currency;
}
Run Code Online (Sandbox Code Playgroud)

在我的力度模板中,即时获取这样的值

$price.value
Run Code Online (Sandbox Code Playgroud)

但我需要在显示之前将其格式化为2位小数.

我想转换

23.59004至23.59

35.7至35.70

3.0至3.00

9至9.00

请告诉我如何在速度模板中执行此操作?我搜索了很多,发现我可以使用速度工具,但没有相关的例子吗?我可以在模板中使用力度工具吗?

Tas*_*kos 25

Velocity工具有望用于Velocity模板; 基本上它们是添加到模板中可用变量的对象,以便您可以使用$numberTool.format("#0.00", $val)或类似.如果所有可用工具都不符合您的需求,只需创建一个POJO并将其添加到模板中.

为了使它工作,您还应该添加以下maven依赖项:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

并编写以下代码:

context.put("numberTool", new NumberTool());
Run Code Online (Sandbox Code Playgroud)

  • 天哪,我没有检查javadocs并且正在拉我的头发:$ numberTool.format($ val,"#0.00").对任何人来说,格式为:$ numberTool.format("#0.00",$ val) (3认同)
  • 我不能使用$ numberTool,它只是打印numberTool.format($ val,"#0.00"),我是否需要包含任何内容? (2认同)

ded*_*dek 21

#set($String = "abc")
$String.format("%.2f", $val)
Run Code Online (Sandbox Code Playgroud)

$val 在这种情况下必须是Double或Float ......

  • 很棒的解决方法!这提到了其他任何地方. (2认同)