设为首页 加入收藏

TOP

Java自定义类开实现四舍五入
2014-11-24 00:14:59 来源: 作者: 【 】 浏览:4
Tags:Java 定义 实现 四舍五入

工作中经常用到浮点数的四舍五入,但Java类库中的Math类的rint()和round()两个方法并不能满足我们的所有需要,下面我们就自定义四舍五入类来满足实际工作中的需要。


public class RoundTool {



/**


* 浮点数的四舍五入


* @param value


* @param dotNum


* @return


*/


public static String round(double value,int dotNum){


String strValue=String.valueOf(value);//转换为字符串


int pos=strValue.indexOf(".");//小数点位置


int len=strValue.length();//数值总位数


int dotLen=len-1-pos;//小数的位数


double endValue=0.0;//保存运算结果的中间变量


String endNum="";//保存最终结果的变量


if(dotNum

String cNum=strValue.substring(pos+dotNum+1,pos+dotNum+2);//获得需要进位


int iNum=Integer.valueOf(cNum);//转换不整数


String sNum=strValue.substring(0,pos+dotNum+1);//获得需要保留的未进行舍入处理的数值


endValue=Double.valueOf(sNum);//转换为double型


if(iNum>=5){//如果需要舍入的值大于等于5


String endPos="";//存放需要进位的小数值


String dotValue="";//连接小数点后的多个0


for(int i=1;i

dotValue=dotValue+"0";//将小数点后的多个0连接到一起


}


endPos="0."+dotValue+"1";//需要进位的小数值


endValue=endValue+Double.valueOf(endPos);//四舍五入处理之后的值


strValue=String.valueOf(endValue);//处理后的值转换为字符串


pos=strValue.indexOf(".");//小数点后的位置


len=strValue.length();//数值总位数


dotLen=len-1-pos;//小数的位数


if(dotLen

for(int i=pos+dotLen+1;i

endNum=String.valueOf(endValue)+"0";//补足小数位数


}


}else{//如果小数位数正好,或超过要求,则进行截位处理


endNum=String.valueOf(endValue).substring(0,pos+dotNum+1);


}


}else{


;


endNum=strValue.substring(0,strValue.indexOf("."))+


strValue.substring(strValue.indexOf("."),strValue.indexOf(".")+dotNum+1);


}


}else if(dotNum==dotLen){


endNum=String.valueOf(value);//小数位数与要求的位数相同,直接转换为字符串


}else{//如果小数位数不足,则补足位数


for(int i=1;i<=dotNum-dotLen;i++){


strValue=strValue+"0";//补足小数位数


}


endNum=strValue;//最终值


}


return endNum;


}




public static void main(String[] args){


System.out.println(RoundTool.round(123.121, 2));


System.out.println(RoundTool.round(123.456789,3));


System.out.println(RoundTool.round(123.5,3));


}


}


程序运行结果:


123.12


123.45


123.500


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android中scrollview与webview冲.. 下一篇C++二维指针分配内存空间

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: