我正在尝试正确解析数字的字符串表示形式。 解析器为我提供了数值Integer / Long / Float / Double,但是当我尝试使用NumberFormat解析时:
String number = "1.0";
NumberFormat.getNumberInstance().parser(number);
它返回Long类型。但是,当我尝试解析“ 1.1”时,它会正确推断出Double(为什么不浮动?)。 我应该编写自己的数字解析器,还是可以对其进行适当地推断类型的方式进行调整。整数作为整数(不长)。浮点数为浮点数(不是Double)。长倍长,两倍长。
答案 0 :(得分:1)
为什么不使用Java的内置数字解析器?
Double.parseDouble()
Float.parseFloat()
Integer.parseInt()
以此类推...
编辑:
查看您的评论后,您可以尝试使用
String number = "1.0";
if (isInteger(number)) {
//parse Int
} else if (isDouble(number)){
//parse Double
}
和方法:
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}
public static boolean isDouble(String s) {
try {
Double.parseDouble(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}
public static boolean isFloat(String s) {
try {
Float.parseFloat(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}