[英]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.