[ 问题: ]
Validate if a given string is numeric. 判断给定的字符串是否是数值
Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
[ 解法: ]
public class Solution {
public static boolean isNumber(String s) {
try {
s = s.toLowerCase();
Double.parseDouble(s);
}
catch (Exception e) {
return false;
}
return s.charAt(s.length() -1) != 'f' && s.charAt(s.length() - 1) != 'd';
}
}
注意:s不能以'f'或'd'结尾, 因为如果以它们结尾时,使用Double转换不会报错,
但是类似:10.1f, 20.1d 按照题意并不能算作有效数值,所以我们不能放过这些“漏网之鱼”。
[ 拓展: ]
1.float:单精度浮点数
声明为float类型的浮点数时,要在结尾加F或f。
float f1 = 11.11F; // 正的浮点数
float f2 = -17.15f; // 负的浮点数
2.double:双精度浮点数
声明为double类型的浮点数时,可在结尾加D或d。当然也可不加,因为浮点类型默认的类型是double。
double d1 = 11.11223D; // 正的浮点数
double d2 = 11.11333d; // 正的浮点数
double d3 = -17.15555; // 负的浮点数
** 这里建议在double数据类型的数后面加上D或d,以便能够和单精度浮点数区分。