2016-11-21 73 views
0

我需要从用户输入数字作为字符串并将其解析到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 当我调试时,我发现它是一个解析问题(显而易见),但不知道什么是解决它的好实践。

+0

请指定编程语言 - 它是Java吗? – lospejos

+0

已更新的问题。是的,它是Java –

回答

3

像莫希特塔库尔说,但编译

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

谢谢Estanislao,供您修正。 –

3

您可以替换点“。”。用逗号:

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

一次,”解析之前尝试这样的:

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

感谢

0

如果。你只是想将你的字符串转换为Double值,那么它可以用下面的方法完成

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第三运营商来完成这项任务。您可以将double值存储而不是打印到屏幕上。

如果这没有帮助,或者你想专门与NumberFormat做它,然后让我知道在评论。

相关问题