Java 如何将相同的甲酸盐输出2.5和2.5?

Java 如何将相同的甲酸盐输出2.5和2.5?,java,number-formatting,Java,Number Formatting,在我的软件中,输入可以双向给出,当我给出2.5时,它返回2.5。但当我给2,5,它给我,2.0。这是我的密码 public PrescriptionNotationParser() { final NumberFormat numberFormat = NumberFormat.getInstance(); if (numberFormat instanceof DecimalFormat) { doseValueFormat = (DecimalFo

在我的软件中,输入可以双向给出,当我给出2.5时,它返回2.5。但当我给2,5,它给我,2.0。这是我的密码

 public PrescriptionNotationParser()
  {
    final NumberFormat numberFormat = NumberFormat.getInstance();

    if (numberFormat instanceof DecimalFormat)
    {
      doseValueFormat = (DecimalFormat) numberFormat;
      doseValueFormat.applyPattern("##.########");
      decimalFormatSymbols = doseValueFormat.getDecimalFormatSymbols();
    }
  }

  private double parse(final String valueStr)
  {
   try
    {
      return doseValueFormat.parse(valueStr).doubleValue();
   }
  catch (ParseException e)
  {
    return 0;
   }
}

需要一些专业知识来解决此问题吗?

2.5
是浮点格式,但
2,5
不是浮点格式,因此
2,5
将只获取以前的值
2

如果您想要支持
2,5
2.5

private double parse(String valueStr)//remove final
  {
   try
    {
      //replace valueStr "," to "."
      return doseValueFormat.parse(valueStr.replace(",", ".")).doubleValue();
   }
  catch (ParseException e)
  {
    return 0;
   }
 }
如果要将
23000.50
更改为
23000.5
,请仅删除
和空格
浮点
最多只能有一个

private double parse(String valueStr)//remove final
  {
   try
    {
      //valueStr remove all "," and " "
      return doseValueFormat.parse(valueStr.replaceAll(",| ", "")).doubleValue();
   }
  catch (ParseException e)
  {
    return 0;
   }
 }

2.5
是浮点格式,但
2,5
不是浮点格式,因此
2,5
将只获取以前的值
2

如果您想要支持
2,5
2.5

private double parse(String valueStr)//remove final
  {
   try
    {
      //replace valueStr "," to "."
      return doseValueFormat.parse(valueStr.replace(",", ".")).doubleValue();
   }
  catch (ParseException e)
  {
    return 0;
   }
 }
如果要将
23000.50
更改为
23000.5
,请仅删除
和空格
浮点
最多只能有一个

private double parse(String valueStr)//remove final
  {
   try
    {
      //valueStr remove all "," and " "
      return doseValueFormat.parse(valueStr.replaceAll(",| ", "")).doubleValue();
   }
  catch (ParseException e)
  {
    return 0;
   }
 }

解析过程中可能出现的数字重复取决于JVM中使用的区域设置。对于不同的语言环境,它是不同的,例如,英语语言环境使用带“,”的数字,而汉语使用带“.”分隔符的数字(这只是一个例子,我不记得很清楚)。这里不能提供完美的东西,但您可以实现一个小的责任链,它分析字符串中的特殊符号(“,“/”),并有自己的模式来解析字符串(例如,如果字符串包含点,DotUnit将返回true,否则只返回false,并将控制权交给CommaUnit)@AndreyIlyunin在我的系统中使用瑞典语和英语env。瑞典语使用“,”作为小数点解析数字的可能重复取决于JVM中使用的语言环境。对于不同的语言环境,它是不同的,例如,英语语言环境使用带“,”的数字,而汉语使用带“.”分隔符的数字(这只是一个例子,我不记得很清楚)。这里不能提供完美的东西,但您可以实现一个小的责任链,它分析字符串中的特殊符号(“,“/”),并有自己的模式来解析字符串(例如,如果字符串包含点,DotUnit将返回true,否则只返回false,并将控制权交给CommaUnit)@AndreyIlyunin在我的系统中使用瑞典语和英语env。瑞典语使用“,”作为小数点,用户输入23000.50这种文本?用户输入23000.50这种文本会发生什么情况?