0

下面的函数完美地工作,但我想让它以双精度格式返回值,因为下面的函数以字符串格式返回值。

private static String convertMoneyToSap(double val) {
    NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
    nf.setGroupingUsed(false);
    return nf.format(val); //--> I would like this to return in double format
}

我怎样才能做到这一点?谢谢。


更新

当我尝试使用:return Double.parseDouble(nf.format(val))时,出现错误:

An error occurred: java.lang.NumberFormatException

上述函数的使用示例如下:

convertMoneyToSap(1234567.89); //--> The expected result: 1234567,89

上述函数的预期结果是以字符串形式返回。当我尝试使用Double.parseDouble()时,它会收到一条错误消息。


更新 2

Double.parseDouble("1234,99") //--> will return error
Double.parseDouble("1234.56") //--> will return successful

问题是,nf.format(val)将返回类似的内容:1234,99并且在涉及return Double.parseDouble(nf.format(val)).

4

3 回答 3

2

将返回类型更改为双精度,并将返回语句更改为:

Double.parseDouble(nf.format(val));
于 2013-10-19T04:53:08.017 回答
2

您可以使用:

   Double.parseDouble();

仅当您想将通过字符串表示的值转换为其对应的双精度值时。

对您的问题的回答将取决于 nf.format(val) 返回的内容。

++++++++++++++++++++

如果您希望方法返回 double 或 Double 的值,则不能使用 ',' 分隔符来表示小数点(基于本地化)。double 将 123.54 仅表示为 123.54,而不是 123,54。

如果要使用本地化格式,请将其设为字符串。否则,将小数点前后的值拆分为两个不同的双变量,并以最适合您的格式表示它们(即,您自己处理本地化工作)。

Double.parseDouble() 不适用于本地化或特殊格式的字符串。

于 2013-10-19T04:53:15.767 回答
2

使用Double.parseDouble()

用。。。来代替

返回 Double.parseDouble(nf.format(val));

并将方法的返回类型设为 Double。

更新答案

val=val.replaceAll(",", "\\.");在 return 语句之前包含。

于 2013-10-19T04:53:30.250 回答