【发布时间】:2011-03-08 13:19:44
【问题描述】:
我总是喜欢在我的函数中输入以获取范围从 0.1 到 999.9 的数字(小数部分总是用“.”分隔,如果没有小数则没有“.”,例如 9 或 7。
无论本地化如何,如何将此字符串转换为浮点值(某些国家/地区使用“,”来分隔数字的小数部分。我总是用“。”得到它)?这是否取决于本地计算机设置?
【问题讨论】:
标签: java
我总是喜欢在我的函数中输入以获取范围从 0.1 到 999.9 的数字(小数部分总是用“.”分隔,如果没有小数则没有“.”,例如 9 或 7。
无论本地化如何,如何将此字符串转换为浮点值(某些国家/地区使用“,”来分隔数字的小数部分。我总是用“。”得到它)?这是否取决于本地计算机设置?
【问题讨论】:
标签: java
Float.parseFloat() 方法不依赖于语言环境。它需要一个点作为小数分隔符。如果您输入的小数点分隔符始终是点,您可以安全地使用它。
如果您需要适应不同的语言环境,NumberFormat 类提供了语言环境感知解析和格式。
【讨论】:
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
DecimalFormat format = new DecimalFormat("0.#");
format.setDecimalFormatSymbols(symbols);
float f = format.parse(str).floatValue();
【讨论】:
new DecimalFormat("0.#", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
valueStr = valueStr.replace(',', '.');
return new Float(valueStr);
完成
【讨论】:
见java.text.NumberFormat和DecimalFormat:
NumberFormat nf = new DecimalFormat ("990.0");
double d = nf.parse (text);
【讨论】:
这个呢:
Float floatFromStringOrZero(String s){
Float val = Float.valueOf(0);
try{
val = Float.valueOf(s);
} catch(NumberFormatException ex){
DecimalFormat df = new DecimalFormat();
Number n = null;
try{
n = df.parse(s);
} catch(ParseException ex2){
}
if(n != null)
val = n.floatValue();
}
return val;
}
【讨论】:
您可以将占位符 %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
【讨论】:
希望这段代码对你有帮助。
public static Float getDigit(String quote){
char decimalSeparator = new DecimalFormatSymbols().getDecimalSeparator();
String regex = "[^0-9" + decimalSeparator + "]";
String valueOnlyDigit = quote.replaceAll(regex, "");
if (String.valueOf(decimalSeparator).equals(",")) {
valueOnlyDigit = valueOnlyDigit.replace(",", ".");
//Log.i("debinf purcadap", "substituted comma by dot");
}
try {
return Float.parseFloat(valueOnlyDigit);
} catch (ArithmeticException | NumberFormatException e) {
//Log.i("debinf purcadap", "Error in getMoneyAsDecimal", e);
return null;
}
}
【讨论】: