栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 保留两位小数或N位

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 保留两位小数或N位

思想

先扩大n+1倍
在取个位数 判断是否大于等于五
若大于等于5 则加10
在除以n+1倍
然后判断小数位数是否合法

代码 拿来即用
 
   public static String decimalRound(String value, int length)
   {
       if (length > 10)
       {
           length = 10;
       }
       double dataDouble = 0;
       //先扩大10^length+1次方
       long dataInteger = (long) (Double.parseDouble(value) * Math.pow(10, length + 1));
       //取出最后一位标志位 判断是否大于等于5
       int flag = (int) dataInteger % 10;
       dataInteger = dataInteger / 10;
       if (flag >= 5)
       {
           dataInteger += 1;
       }else if(flag<=-5)
       {
           dataInteger -= 1;
       }
       //恢复小数
       dataDouble = dataInteger / Math.pow(10, length);

       //检查小数位数
       String dataString = String.valueOf(dataDouble);
       String integerPart = dataString.split("\.")[0];
       String decimalPart = dataString.split("\.")[1];
 	   int decimalLength = decimalPart.length();
       if (decimalLength >= length)
       {
           decimalPart=decimalPart.substring(0, length);
       } else
       {
           for (int i = 0; i < length - decimalLength; i++)
           {
               decimalPart += "0";
           }
       }
       return integerPart + "." + decimalPart;
   }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681622.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号