如何采用相同的格式输出 2.5 和 2,5?

how to take same formate out put 2.5 and 2,5?

在我的软件中可以双向输入,当我输入 2.5 时,它 return 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是一个float,但是2,5不是float格式,所以2,5只会得到之前的值2.

如果你想支持2,52.5

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

如果您想要 23,000 .5023000.5,只需删除 , 和 space。
浮点数 . 最多只有一个。

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

如果您想始终以英文格式显示您的输入(带点 . ) 您可以将占位符 %s-String 用于任何基本类型。

float x = 3.15f, y = 1.2345f;

System.out.printf("%.4s and %.5s", x, y);

输出:3.15 和 1.234

%s 始终是英文格式,无论本地化如何。

如果您想要特定的本地格式,您也可以这样做:

import java.util.Locale;

float x = 3.15f, y = 1.2345f;

System.out.printf(Locale.GERMAN, "%.2f and %.4f", x, y);

输出:3,15 和 1,2345

当然你可以使用 if 条件,比如 if Locale.GERMAN then display Locale.GERMAN