今天在实现业务功能的时候,需要用到指定位数的小数,所以封装了一个方法,写的有点乱,考虑的还算周全吧。主要是用String提供的方法实现的。
public class MathHelper {
/**
*
* @param value 需要化成指定位数的值
* @param digit 小数位数
* @return
*/
public static Float getDecimals(Float value,int digit){
String str = value.toString();
Float result = null;
if(str.substring(str.indexOf(".")+1).length()<=digit){
return value;
}else{
//模拟进位
//小数点后面的值
String decimalValue =str.substring(str.indexOf(".")+1);
if(decimalValue.length()<(digit+1)){
//此时不需要四舍五入
result = Float.parseFloat(str);
}else{
//获取后两位的值
//最后一位的值
String lastValue =String.valueOf(decimalValue.charAt(decimalValue.length()-1));
//前一位的值
String previousValue = String.valueOf(decimalValue.charAt(decimalValue.length()-2));
if(lastValue.matches("[5-9]")){
previousValue = Integer.toString(((Integer.parseInt(previousValue)+1)));
String finalResult = str.substring(0, str.length()-2)+previousValue;
result = Float.parseFloat(finalResult);
}else{
previousValue = Integer.toString(((Integer.parseInt(previousValue))));
String finalResult = str.substring(0, str.length()-2)+previousValue;
result = Float.parseFloat(finalResult);
}
}
}
return result;
}
}