码迷,mamicode.com
首页 > 其他好文 > 详细

double保留两位小数

时间:2017-09-27 21:01:11      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:小数   增加   boolean   lag   value   四舍五入   校验位   round   for   

    public static String format(double dValue, int lScale) {
        // ////负数,则装化为正数后进行四舍五入
        boolean bFlag = false;
        if (dValue < 0) {
            bFlag = true;
            dValue = -dValue;
        }
        long lPrecision = 10000; // 精度值,为了避免double型出现偏差,增加校验位
        long l45Value = lPrecision / 2 - 1; // 四舍五入的判断值
        long lLength = 1; // 乘的数字
        for (int i = 0; i < lScale; i++) {
            lLength = lLength * 10; // 比如保留2位,乘以100
        }
        long lValue = (long) dValue; // 值的整数部分
        long lValue1 = (long) ((dValue - lValue) * lLength); // 乘以保留位数
        long lValue2 = (long) ((dValue - lValue) * lLength * lPrecision); //
        long lLastValue = lValue2 - (lValue2 / lPrecision) * lPrecision;
        if (lLastValue >= l45Value) {
            lValue1++;
        }
        dValue = lValue + (double) lValue1 / lLength; // 四舍五入后的值
        if (bFlag) {
            dValue = -dValue;
        }
        java.math.BigDecimal bd = new java.math.BigDecimal(dValue);
        bd = bd.setScale(lScale, java.math.BigDecimal.ROUND_HALF_UP);
        return bd.toString();
        // Replace by Huang Ye
        // double d = UtilOperation.Arith.round(dValue, lScale);
        // return String.valueOf(dValue);
    }

 

double保留两位小数

标签:小数   增加   boolean   lag   value   四舍五入   校验位   round   for   

原文地址:http://www.cnblogs.com/lifusen/p/7603252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!