Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 如何将同时使用小数分隔符逗号和点的字符串解析为双精度_Java_String_Decimal_Separator - Fatal编程技术网

Java 如何将同时使用小数分隔符逗号和点的字符串解析为双精度

Java 如何将同时使用小数分隔符逗号和点的字符串解析为双精度,java,string,decimal,separator,Java,String,Decimal,Separator,我需要从用户输入一个字符串形式的数字,并将其解析为Double对象 我希望它可以使用逗号,作为小数点分隔符,也可以使用点,并保存它,只使用点输出 示例:22,33-->22.33和22.33-->22.33 我使用的是: NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); try { Number number = format.parse(formDto.getWeight());

我需要从用户输入一个字符串形式的数字,并将其解析为Double对象

我希望它可以使用逗号,作为小数点分隔符,也可以使用点,并保存它,只使用点输出

示例:22,33-->22.33和22.33-->22.33

我使用的是:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
        try {
            Number number = format.parse(formDto.getWeight());
            kitten.setWeight(number.doubleValue());
        } catch (ParseException e) {
            e.printStackTrace();
        }
但它只获取带有“,”分隔符的值。当用户使用点输入时,它将丢失所有小数并返回22.33-->22.0或4.1-->4.0 当我调试时,我发现这是一个解析问题(很明显),但不知道解决这个问题的好方法。

在解析之前,可以将点“.”替换为逗号:,”

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
    try {
        Number number = format.parse(formDto.replace('.', ',').getWeight());
        kitten.setWeight(number.doubleValue());
    } catch (ParseException e) {
        e.printStackTrace();
    }
尝试一下:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
        try {
           Number number = Double.parseDouble(format.replace(",", ".").getWeight());
            kitten.setWeight(number.doubleValue());
        } catch (ParseException e) {
            e.printStackTrace();
        }

谢谢。

就像莫希特·塔库尔所说的,但是可以编译

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
try {
    Number number = format.parse(formDto.getWeight().replace('.', ','));
    kitten.setWeight(number.doubleValue());
} catch (ParseException e) {
    e.printStackTrace();
}

如果您只想将字符串转换为双倍值,那么可以使用以下方法完成

String numberStr1 = "22,33"; //number with comma as decimal separator
String numberStr2 = "22.33"; //number with dot as decimal separator

System.out.println(numberStr1.contains(",") ? Double.valueOf(numberStr1.replace(',', '.')):Double.valueOf(numberStr1));
System.out.println(numberStr2.contains(",") ? Double.valueOf(numberStr2.replace(',', '.')):Double.valueOf(numberStr2));
我使用Java三级操作符来完成这个任务。您可以存储双值,而不是打印到屏幕上


如果这样做没有帮助,或者您想使用NumberFormat专门进行此操作,请在评论中告诉我。

请指定编程语言-是Java吗?更新的问题。是的,是Java