如何采用相同的格式输出 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,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;
}
}
如果您想要 23,000 .50
到 23000.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
在我的软件中可以双向输入,当我输入 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,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;
}
}
如果您想要 23,000 .50
到 23000.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