gpt4 book ai didi

java - 通过 java.text.DecimalFormat 格式化数字总是在 SSJS 中返回错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:57 25 4
gpt4 key购买 nike

我正在尝试在 SSJS 中使用 java.text.DecimalFormat 格式化数字,但它返回错误。这是我的代码片段。

var df:java.text.DecimalFormat = new java.text.DecimalFormat("000");
df.format(50);

这会返回错误 调用 format(long) 和 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 实用程序类。除了调用 java 之外,SSJS 对几乎所有东西都很糟糕。

关于java - 通过 java.text.DecimalFormat 格式化数字总是在 SSJS 中返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com