如何自定义实现数值的四舍五入?

本文介绍了一个Java实现的四舍五入工具类,该工具类能够对浮点数进行精确的四舍五入操作,并能根据指定的小数位数进行数值处理。通过解析浮点数的字符串表示,该工具类可以有效地处理各种复杂的数值调整情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class RoundTool
{
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<dotLen)
     //需要保留的小数位数小于实际的小数位数。
     {  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="";
        //链接小数点后的多个零
        for (int i=1;i<dotNum;i++ )
        {  dotValue=dotValue+"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<dotNum){//如果小数位数不足补足为数
        for(int i=pos+dotLen+1;i<pos+dotNum+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)
    {
RoundTool r=new RoundTool();
        System.out.println(r.round(123.121,5));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值