I am trying to format a number using java.text.DecimalFormat
in SSJS but it returns an error. Here is my code snippet.
var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.format(50);
This returns an error of Ambiguity when calling format(long) and format(double)
. So I tried to parse the number as double or long but still the same error.
df.format(java.lang.Long.parseLong("50")); //Returns same error
df.format(java.lang.Double.parseDouble("50")); //Returns same error
I created a Java implementation of the above SSJS code and it works fine.
DecimalFormat df = new DecimalFormat("000");
return df.format(50);
I have quite a few lines of SSJS code (of which the above snippet is part of) and creating a new Java class for two lines seems too much effort. Anyone knows why this doesn't work in SSJS?
@Naveen: Have you tried below code, it worked for me without creating any java class :)
Thanks, please let me know your comments on this ;)
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:
But I would rather create some custom java utils classes for this purpose. SSJS is awful for almost anything except for calling java.