繁体   English   中英

通过java.text.DecimalFormat格式化数字始终在SSJS中返回错误

[英]Formatting number via java.text.DecimalFormat always returns error in SSJS

我试图在SSJS中使用java.text.DecimalFormat格式化数字,但它返回一个错误。 这是我的代码片段。

var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.format(50);

Ambiguity when calling format(long) and format(double)返回Ambiguity when calling format(long) and format(double)错误。 所以我试着将数字解析为double或long,但仍然是同样的错误。

df.format(java.lang.Long.parseLong("50"));     //Returns same error
df.format(java.lang.Double.parseDouble("50")); //Returns same error

我创建了上述SSJS代码的Java实现,它工作正常。

DecimalFormat df = new DecimalFormat("000"); 
return df.format(50);

我有很多SSJS代码(上面的代码片段是其中的一部分),并为两行创建一个新的Java类似乎太费力了。 任何人都知道为什么这在SSJS中不起作用?

它不起作用,因为SSJS无法区分double和float(这是设计的 - javascript只有64位精度的数字概念)。

你可以用反射破解这个:

var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.getClass().getMethod("format", Double.class).invoke(df, 50);

但我宁愿为此目的创建一些自定义的java utils类。 除了调用java之外,SSJS对于几乎所有东西都很糟糕。

@Naveen:你试过下面的代码吗,它对我有用而没有创建任何java类:)

var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
var dblNum: java.lang.Double = new java.lang.Double(50);
return df.format(dblNum);

谢谢,请告诉我你对此的评论;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM