当前位置: 首页 > 知识库问答 >
问题:

如何使NumberFormat返回为双类型[重复]

南门峰
2023-03-14

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

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))时,它将返回错误。

共有3个答案

魏晨
2023-03-14

使用Double。parseDouble()

替换为

返回双精度。parseDouble(nf.format(val));

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

更新答案

包含val=val.replaceAll(",","\\.");返回语句前的

拓拔迪
2023-03-14

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

Double.parseDouble(nf.format(val));
柯骏
2023-03-14

您可以使用:

   Double.parseDouble();

仅当您希望将通过字符串表示的值转换为相应的双精度值时。

对您问题的回答将取决于nf。格式(val)返回。

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

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

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

 类似资料:
  • 如果我有以下代码 首先,这甚至是可能的,因为它编译得很好。但是我不能使用中的方法执行操作: makeCan是否不同时返回Can和PromotionalCan?如果是这样,当返回PromotionalCan时,如何对变量进行操作?谢谢 编辑:PromotionalCan继承自Can,第二种方法是在PromotionalCan中

  • 我有一个任务,我们要创造一个石头,纸,剪刀的游戏。它指定我们必须创建一个抽象的“工具”类,其中有三个子类:“ToolRock”、“ToolPaper”、“ToolScissors”。抽象类应该有一个“+getFeagnet():tool”函数(用斜体写成)。 我的假设是做一个像这样的抽象函数: RockTool类被指定为具有函数“+get弱点():tool”(不是用斜体写的),我的想法是创建一个覆

  • 假设我有一个函数: 如何指定可以为的返回类型?

  • 我正试图从使用observable转换下面的observable代码。使用可管道操作符创建到。 我已经尝试了下面的方法,但是我得到了一个转换错误,无法转换可观察的类型。看不见的。如有任何帮助,我们将不胜感激。

  • 我正在尝试为此方法返回NotFound,但收到以下错误: 不明白应该怎么投,参数等于“1”想退一个404 我只需要这样做: