`

Java 精确四舍五入 并计算百分比

阅读更多

最初使用java.text.DecimalFormat;的方法总是不能精确四舍五入代码如下

 

private static DecimalFormat df = new DecimalFormat("##.00");

    //换算百分比
    private double toScale(double v) {
        double temp = v / sum;
        double v1 = Double.parseDouble(df.format((v / this.sum * 100)));
        return v1;
    }

 但这总方式换算0.3125 无法精确进行进位得到的结果是0.312 应该是0.313

 

后来改为java.math.BigDecimal;并手动截取需要进位的数字进行判断是否采取四舍五入完美解决

 

Double[] d = new Double[4];
        d[0] = 0.078125;
        d[1] = 0.3125;
        d[2] = 0.5703125;
        d[3] = 0.0390625;
 
        for (Double c : d) {
            BigDecimal a = new BigDecimal(c);
            String s = a.setScale(4, 1).toString();
            System.out.print("四舍五前" + s + "      ");
            Integer lastNum = Integer.valueOf(s.substring(s.length() - 1, s.length()));          //截取最后一位判断是否四舍五入
            System.out.print("截取需要进位数字" + lastNum + "      ");
            float v;
            if (lastNum >= 5) {
                v = Float.parseFloat(a.setScale(3, 2).toString());      //setScale前面的参数代表从小数点后的第几位换算 后面2就代表强制进位
                System.out.println("四舍五入后:" + v * 100);
 
                System.out.println("");
            } else {
                v = Float.parseFloat(a.setScale(3, 1).toString());       //这里后面1代表着不进位直接去除掉后面多余的余数
                System.out.println("四舍五入后:" + v * 100);
            }
            System.out.println("----------------------------------------------------------------");
        }

 

Have Fun!

分享到:
评论
1 楼 浮梦 2014-12-14  
[u][i][b]
[flash=200,200][url][img][img][img][img][img][img][list]
[*]
[/list][/img][/img][/img][/img][/img][/img][/url][/flash]
[/b][/i][/u]

相关推荐

    java保留两位小数问题

    四舍五入 ,浮点数精确计算,浮点数输出(科学记数法)等等

    Java中使用的常用数学类

    由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供 精确的浮点数运算,包括加减乘除和四舍五入,以及百分数转换。

    Java的数字精确计算问题-BigDecimal

    java的数字运算,偶尔会出现精度的问题,以下阐述的 java的...  java为了让float或者double类型能够精确的计算,提供了BigDecimal类。  示例如下: public static BigDecimal getBigDecimal(Doubleval){ //把d

    高精确处理常用的数学运算工具类

    高精确处理常用的数学运算工具类,包含多种入参场景的加减乘除运算方法,百分比,等。 可用于精确的数学计算,比如金额等数据运算。也可以基于此工具类按需二次开发,提升效率。

    德州扑克源码java-holdem_calc:德州扑克赔率计算器

    默认的蒙特卡洛模拟通常精确到最接近的百分比。 可以通过增加运行的仿真次数来提高准确性,但这将导致更长的运行时间。 命令行选项 -h, --help show this help message and exit -b [card [card ...]], --board ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    昆山工业技术研究院着眼于为委托用户和质检机构搭建良好的沟通桥梁,免去目前市场业务中企业用户需要实地地并频繁地与检测机构沟通,从而提出自己的委托乃至下委托单、等待检测报告等,设计并研发了市场上首款提供...

    Oracle9i的init.ora参数中文说明

    并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...

    freemarker总结

    ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x> ${x_index + 1}.${x}, 星期四"><#break></#if> <p>We have these animals: <tr><th>Name<th>Price <tr><td>${...

    Toad 使用快速入门

    四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4. 如何进行PLSQL的debug 5. 如何使用SQLab Xpert优化SQL 6. 如何使用SQL Modeler来编写查询 7. 如何使用...

Global site tag (gtag.js) - Google Analytics