java保留小数【JAVA基础】

本文详细解析了Java中DecimalFormat类的使用方法,特别是'0'和'#'作为占位符的区别,通过实例展示了如何精确控制小数格式化输出,对Java开发者理解和应用DecimalFormat非常有帮助。

方法一:使用DecimalFormat类

示例代码:

import java.text.DecimalFormat;

public class DecimalFormatExample {
    public static void main(String[] args) {
        double number = 3.1415926;
        DecimalFormat df = new DecimalFormat("#.##");
        String formattedNumber = df.format(number);
        System.out.println("Formatted Number: " + formattedNumber);
    }
}

DecimalFormat format 方法,在format()一个小数时,总是对格式中的’0’和’#'有些不解吧!

eg: 
    1new DecimalFormat("00.000").format(pi) //结果:03.142
    2new DecimalFormat("##.###").format(pi) //结果:3.142

都是对pi进行格式化,但第一个的结果是03.142,第二个的结果是3.142
这是什么原因呢?
0和#都是占位符,但在不同的地方,作用不一样。下面对他们做了具体的比较。

0: 
  比实际数字的位数多,不足的地方用0补上。
    new DecimalFormat("00.00").format(3.14)  //结果:03.14
    new DecimalFormat("0.000").format(3.14)  //结果: 3.140
    new DecimalFormat("00.000").format(3.14)  //结果:03.140
    比实际数字的位数少:整数部分不改动,小数部分,四舍五入
    new DecimalFormat("0.000").format(13.146)  //结果:13.146
    new DecimalFormat("00.00").format(13.146)  //结果:13.15
    new DecimalFormat("0.00").format(13.146)  //结果:13.15

#: 
    比实际数字的位数多,不变。
    new DecimalFormat("##.##").format(3.14)  //结果:3.14
    new DecimalFormat("#.###").format(3.14)  //结果: 3.14
    new DecimalFormat("##.###").format(3.14)  //结果:3.14
    比实际数字的位数少:整数部分不改动,小数部分,四舍五入
    new DecimalFormat("#.###").format(13.146)  //结果:13.146
    new DecimalFormat("##.##").format(13.146)  //结果:13.15
    new DecimalFormat("#.##").format(13.146)  //结果:13.15

方法二:使用String.format()方法

%f表示浮点数类型,.2表示保留两位小数。

public class StringFormatExample {
    public static void main(String[] args) {
        double number = 3.1415926;
        String formattedNumber = String.format("%.2f", number);
        System.out.println("Formatted Number: " + formattedNumber);
    }
}

方法三:使用BigDecimal类

如果需要更精确的小数计算,可以使用Java的BigDecimal类。BigDecimal提供了高精度的计算,并允许我们控制小数的位数。在示例中,我们使用了BigDecimal.ROUND_HALF_UP舍入模式,它表示四舍五入。

import java.math.BigDecimal;

public class BigDecimalExample {
    public static void main(String[] args) {
        BigDecimal number = new BigDecimal("3.1415926");
        BigDecimal roundedNumber = number.setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println("Rounded Number: " + roundedNumber);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值