Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以双精度类型进行NumberFormat返回_Java_String_Double_Number Formatting - Fatal编程技术网

Java 如何以双精度类型进行NumberFormat返回

Java 如何以双精度类型进行NumberFormat返回,java,string,double,number-formatting,Java,String,Double,Number Formatting,下面的函数工作得很好,但我想让它以双精度格式返回值,因为下面的函数以字符串格式返回值 private static String convertMoneyToSap(double val) { NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN); nf.setGroupingUsed(false); return nf.format(val); //--> I would like this

下面的函数工作得很好,但我想让它以双精度格式返回值,因为下面的函数以字符串格式返回值

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
,并且在返回Double.parseDouble(nf.format(val))时将返回错误,将返回类型更改为Double,并将返回语句更改为:

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

将return type更改为double,将return语句更改为:

Double.parseDouble(nf.format(val));
您可以使用:

   Double.parseDouble();
仅当您希望将通过字符串表示的值转换为其相应的双精度值时

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

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

如果希望该方法返回double或double的值,则不能使用“,”分隔符来表示小数点(基于本地化)。double表示123.54仅为123.54,而非123.54

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

Double.parseDouble()无法处理本地化或特殊格式的字符串。

您可以使用:

   Double.parseDouble();
仅当您希望将通过字符串表示的值转换为其相应的双精度值时

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

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

如果希望该方法返回double或double的值,则不能使用“,”分隔符来表示小数点(基于本地化)。double表示123.54仅为123.54,而非123.54

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

Double.parseDouble()无法处理本地化或特殊格式的字符串。

使用

取代

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

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

更新答案

包括
val=val.replaceAll(“,”,“\\”)在返回语句之前。

使用

取代

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

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

更新答案



包括
val=val.replaceAll(“,”,“\\”)返回语句之前。

可能重复:从double转换为double有什么意义?它们基本上是一样的“双格式”是什么意思?(对于给定的输入)结果应该是什么样子?@IlyaBursov:是的,它们是。但是我想更改区域设置,这样它会返回类似于:
123.456,78
而不是
123456.78
的内容,因此您希望将double转换为string,这就是您当前的代码可能重复的内容:从double转换为double有什么意义?它们基本上是一样的“双格式”是什么意思?(对于给定的输入)结果应该是什么样子?@IlyaBursov:是的,它们是。但是我想更改区域设置,这样它会返回类似以下内容:
123.456,78
而不是
123456.78
,因此您想将double转换为string,这是您当前的代码,您可以给我一个
double
和。。我必须做所有的工作才能拿到双份的?(我甚至不确定它是否能在所有地区正常工作!)如果这是最终目标,为什么不
Double.valueOf(val)
呢?检查此项以了解valueOf和parseDouble之间的区别:我不明白这有什么关系。如果出于某种奇怪的原因,一个人想要一个不等于任何其他双精度的双精度,那么可以使用
新双精度(val)
。你在外面做的事情真是太疯狂了!不能使用valueOf或parseDouble将double转换为double。你知道double和double的区别吗?问题是“以double格式返回值”,因此答案是。同意。。。这是无用的。我没有先检查方法。似乎用户想要将123456.78转换为123.456,78。因此,我对同一问题的回答无效。因此,你给我一个
双精度
和。。我必须做所有的工作才能拿到双份的?(我甚至不确定它是否能在所有地区正常工作!)如果这是最终目标,为什么不
Double.valueOf(val)
呢?检查此项以了解valueOf和parseDouble之间的区别:我不明白这有什么关系。如果出于某种奇怪的原因,一个人想要一个不等于任何其他双精度的双精度,那么可以使用
新双精度(val)
。你在外面做的事情真是太疯狂了!不能使用valueOf或parseDouble将double转换为double。你知道double和double的区别吗?问题是“以double格式返回值”,因此答案是。同意。。。这是无用的。我没有先检查方法。似乎用户想要将123456.78转换为123.456,78。因此,我对同一问题的回答无效。谢谢,但它返回错误,请参阅上面的更新。谢谢,但它返回错误,请参阅上面的更新。谢谢,但它返回错误,请参阅上面的更新。@mrjimoy_05更新的回答。谢谢,但它返回错误,请参阅更新