我正在尝试使用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)
。所以我试着将数字解析为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中不起作用?
答案 0 :(得分:3)
它不起作用,因为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几乎所有东西都很糟糕。
答案 1 :(得分:2)
@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);
谢谢,请告诉我你对此的评论;)