在Java中,如何将float类型的数字保留两位小数,而不使用四舍五入?
123.99999 to 123.99
-8.022222 to -8.02
不应该四舍五入,只需截取小数位并保留两位。
第二点是如何验证或计算小数点后有多少位数字:
123.99 will give true or 2
123.999 will give false or 3
更新
这里输入的数字为字符串,因此我会按照建议使用这种方法;如果有任何异常,我将使用int尝试/捕获块。欢迎提供任何更聪明的操作建议:
public static float onlyTwoDecimalPlaces(String number) {
StringBuilder sbFloat = new StringBuilder(number);
int start = sbFloat.indexOf(".");
if (start < 0) {
return new Float(sbFloat.toString());
}
int end = start+3;
if((end)>(sbFloat.length()-1)) end = sbFloat.length();
String twoPlaces = sbFloat.substring(start, end);
sbFloat.replace(start, sbFloat.length(), twoPlaces);
return new Float(sbFloat.toString());
}