java除法保留n位有效位

java除法保留n位有效位

动态的除法计算和小数点后面的位数保留

/**
     * 计算两个数的百分比 形式为 23.22%
     * 
     * @param numerator
     *            分子
     * @param denominator
     *            分母
     * @param digit
     *            小数保留位数
     * @return
     */
    public static String compilePer(int numerator, int denominator, int digit) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < digit; i++) {
            sb.append("#");
        }
        DecimalFormat df = new DecimalFormat("#.##" + sb.toString());
        String formatValue = df.format(((double) numerator / denominator));
        double doubleValue = Double.parseDouble(formatValue) * 100;
        StringBuffer sb2 = new StringBuffer();
        for (int i = 0; i < digit; i++) {
            if (i == 0) {
                sb2.append(".#");
            } else {
                sb2.append("#");
            }
        }
        DecimalFormat df2 = new DecimalFormat("#" + sb2.toString());
        return df2.format(doubleValue);
    }

虽然用到的情况不是很多,但是还是挺便捷的

这里我们主要用到DecimalFormat类,顾名思义就是处理小数点格式的类


DecimalFormat简单用法

  • #号 表示保留可以保留的位数

比如小数本来的位数比你要保留的位数多的情况

new DecimalFormat("#.##").format(2.133) //out>  2.13

小数本来的位数比你要保留的位数少的情况

new DecimalFormat("#.##").format(2.1) //out>  2.1

可以看出#号的保留方式不是绝对的


  • 0 表示保留有效位数,不足用0顶
new DecimalFormat("00.000").format(2.1) //out>  02.100

  • % 表示以百分比形式(自动乘100加百分号字符)
new DecimalFormat("#0.00%").format(0.021) //out>  2.10%

猜你喜欢

转载自blog.csdn.net/weixin_39080782/article/details/78644420