四舍六入五成双

package   text.work;

public   class   四舍六入五成双 {

         /*
       * 单值修约
       * num1:待修约值
       * pre:修约后数据精度
       * result:修约后结果
       */
         public   static   String numRou(String num1, int   pre){
            String result =   "" ;
               if (num1.contains( "."   )&&(pre > 0)){
                  String[] str = num1.split(   "\\." );
                     if (str[1].length()<=pre){
                        StringBuffer sb =   new   StringBuffer(num1);
                           for ( int   i = 0;i <(pre - str[1].length());i++){
                              sb.append(   "0" );
                        }
                        result = sb.toString();
                  }
                     else {
                        StringBuffer sb_add1 =   new   StringBuffer( "0."   );
                           for ( int   i = 0; i< pre -1;i++){
                              sb_add1.append(   "0" );
                        }
                        sb_add1.append(   "1" );
                        Double num_add1 = Double.parseDouble(sb_add1.toString());   //进1时,加此数(+1)
                        StringBuffer sb =   new   StringBuffer(str[0]);
                        sb.append(   "." );
                        String str_pre = str[1].substring(0,pre);
                           char   str_rouDat = str[1].charAt(pre); //精度后一位,依据此数进行舍入判定
                        sb.append(str_pre);
                        String str_rouBefore = sb.toString();
                        String str_odd_even = str_rouBefore.substring(str_rouBefore.length()-1);
                        Integer num_odd_even = Integer.parseInt(str_odd_even); //修约后最末位,依据此位基偶判定是否+1
                        Double num_rou = Double.parseDouble(str_rouBefore);
                           if (str_rouDat -   '5'   > 0){ //大于5进1
                              num_rou = num_rou + num_add1;
                        }
                           else   if   (str_rouDat -   '5'   == 0){   //等于5,留双
                              String strlit = str[1].substring(pre);
                              Double dblit = Double.parseDouble( "0." +strlit);
                                 if (dblit > 0.5){
                                    num_rou = num_rou + num_add1;
                              }
                                 else   if   (num_odd_even % 2 == 1){
                                    num_rou = num_rou + num_add1;
                              }
                        }
                        String str_rouAfter = num_rou.toString();
                        String[] str_rouAfters = str_rouAfter.split( "\\."   );
                        StringBuffer sb_rouAfter =   new   StringBuffer(str_rouAfters[0]);
                        sb_rouAfter.append(   "." );
                           if (str_rouAfters[1].length()<pre){
                              sb_rouAfter.append(str_rouAfters[1]);
                                 for ( int   i = 0;i<(pre - str_rouAfters[1].length());i++){
                                    sb_rouAfter.append(   "0" );
                              }
                        }
                           else {
                              sb_rouAfter.append(str_rouAfters[1].substring(0,pre));
                        }
                        result = sb_rouAfter.toString();
                  }
            }
               else   if   (num1.contains( "." )&&(pre <= 0)){
                  String[] str = num1.split(   "\\." );
                     char   str_odd_even = str[1].charAt(0);
                  StringBuffer sb =   new   StringBuffer(str[0]);
                  Integer num = Integer. parseInt(sb.toString());
                     if (str_odd_even -   '5'   > 0){
                        num = num + 1;
                  }
                     else   if   (str_odd_even -   '5'   == 0){
                        String strlit = str[1].toString();
                        Double dblit = Double. parseDouble( "0." +strlit);
                           if (dblit > 0.5){
                              num = num + 1;
                        }
                           else   if   (num%2==1){
                              num = num + 1;
                        }
                  }
                  result = num.toString();
            }
               else {
                  StringBuffer sb =   new   StringBuffer(num1);
                     if (pre > 0){
                        sb.append(   "." );
                  }
                     for ( int   i = 0; i < pre ;i++){
                        sb.append(   "0" );
                  }
                  result = sb.toString();
            }
               return   result;
      }
         public   static   void   main(String[] args) {
            String numRou = numRou( "23.525" ,2);
            System.   out .println(numRou);
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值