Scala 在播放2模板中设置双精度格式的正确方法是什么

Scala 在播放2模板中设置双精度格式的正确方法是什么,scala,playframework-2.0,Scala,Playframework 2.0,这里是我的缩写代码从播放2模板 @(variable: com.mypackage.Variable) <div class='statsbody'> <div class='statsform'> <label>Average:</label> <span>@"%.2f".format(variable.getAverage())</span> </div>

这里是我的缩写代码从播放2模板

@(variable: com.mypackage.Variable) 

<div class='statsbody'>
    <div class='statsform'>
        <label>Average:</label>
        <span>@"%.2f".format(variable.getAverage())</span>
    </div>
</div>
我是从上面得到这个想法的,它说明了如何在scala命令提示符下实现它,这很好,但在模板中不起作用

getAverage()
方法属于我正在使用的一个外部Java包,它返回一个原始的
double
。这一切都很好,没有格式,我可以很高兴地显示正确的数字

我尝试了多种替代方法,包括使用静态Java字符串格式化方法

@String.format("%.2f", variable.getAverage())
…给了

Overloaded method value [format] cannot be applied to (String, Double)
所以我的问题是,在Play 2模板中设置double格式的正确方法是什么?我知道我可能会使用Javascript,但我想知道是否有Play/Scala解决方案。

我找到了答案,但它没有直接解决眼前的问题。如果我像这样将
double
放入
java.lang.double
中,我可以让
String.format
代码正常工作

@String.format("%.2f", new java.lang.Double(variable.getAverage()))
这暂时解决了我的问题,但并没有真正回答问题。必须有一个Scala/Play解决方案。。。必须在那里吗?

使用括号:

@("%.2f".format(variable.getAverage()))
或:


它允许您在模板中编写多语句scala代码。

我找到的唯一正确更改用户语言并对数字应用格式的解决方案是:

在控制器中:

public Result lang(String lang) {
    changeLang(lang);
    Logger.debug("Language change request: " + lang);
    return redirect(routes.Dashboard.dashboard());
}
在模板中,我们使用以下内容:

 <td>@("%.2f".formatLocal(lang().toLocale(), variable.getAverage()))</td>
@(“%.2f.formatLocal(lang().toLocale(),variable.getAverage()))
public Result lang(String lang) {
    changeLang(lang);
    Logger.debug("Language change request: " + lang);
    return redirect(routes.Dashboard.dashboard());
}
 <td>@("%.2f".formatLocal(lang().toLocale(), variable.getAverage()))</td>