我试图格式化使用数量java.text.DecimalFormat
的SSJS但它返回一个错误。 这里是我的代码片段。
var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.format(50);
这将返回的错误Ambiguity when calling format(long) and format(double)
。 所以,我试图解析为双或长,但仍是同样的错误数目。
df.format(java.lang.Long.parseLong("50")); //Returns same error
df.format(java.lang.Double.parseDouble("50")); //Returns same error
我创建了一个Java实现上述SSJS代码,它工作正常。
DecimalFormat df = new DecimalFormat("000");
return df.format(50);
我有SSJS代码(以上片段是的一部分),创造了两行新的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);
谢谢,请让我知道您对此的意见;)
It does not work because SSJS cannot tell the difference between double and float (this is by design - javascript has only concept of number with 64 bit precision).
You can probably hack this with reflection:
var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.getClass().getMethod("format", Double.class).invoke(df, 50);
But I would rather create some custom java utils classes for this purpose. SSJS is awful for almost anything except for calling java.