java怎么用变量做四舍五入_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

原文:http://netbloomy.blog.51cto.com/6783346/1383683

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值