java除法保留n位有效位

本文介绍了一种使用Java实现动态除法计算的方法,并详细解释了如何通过DecimalFormat类来保留指定数量的小数位数。文章还提供了具体的代码示例,展示了如何将计算结果格式化为百分比形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值