簡體   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