Java基础 - Java中Double类型的小数保留(DecimalFormat和BigDecimal)

Java中Double类型的小数保留

1.依托于DecimalFormat类

DecimalFormat类来自import java.text.DecimalFormat包,它继承于NumberFormat类,用于格式化十进制数,有了这一个类的存在,使得我们针对数值保留位数的处理变得十分方便。它的构造方法有三种形式,格式为

//1.无参构造
public DecimalFormat() {...}
//2.有参构造
public DecimalFormat(String pattern) {...}
//3.多参构造
public DecimalFormat (String pattern, DecimalFormatSymbols symbols) {...}

它可在构造方法中传递符号,下面看一下具体符号的含义:

符号位置本地化描述
0数字阿拉伯数字
#数字如果不存在显示为空
.数字小数分隔符
-数字减号
,数字分组分隔符
E数字分隔科学计数法中的尾数和指数
;子模式边界分隔正数和负数子模式
'前缀或后缀用于在前缀或或后缀中为特殊字符加引号,
例如 "'#'#" 将 123 格式化为 "#123"
要创建单引号本身,请连续使用两个单引号:"# o''clock"
%前缀或后缀乘以 100 并显示为百分数
/u2030前缀或后缀乘以 1000 并显示为千分数
(/u00A4)前缀或后缀货币记号,由货币符号替换。如果两个同时出现,
则用国际货币符号替换。如果出现在某个模式中,
则使用货币小数分隔符,而不使用小数分隔符。

示例

无参构造示例:

DecimalFormat df = new DecimalFormat();
System.out.println(df.format(1234.1234));// 1234.123 默认保留三位小数

有参构造示例:

DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df2 = new DecimalFormat("#.#"); 
DecimalFormat df3 = new DecimalFormat("000.000"); 
DecimalFormat df4 = new DecimalFormat("###.###"); 
System.out.println(df1.format(12.34));// 12.3
System.out.println(df2.format(12.34));// 12.3
System.out.println(df3.format(12.34));// 012.340
System.out.println(df4.format(12.34));// 12.34

更多示例查看:

https://blog.csdn.net/gm_163/article/details/9499337

2. 扩展(BigDecimal类)

https://blog.csdn.net/z956281507/article/details/79188081

Java中存储金额用什么数据类型?

首先不能使用float和double存储,float和double浮点数,浮点数参与的运算通常伴随着因为无法精确表示而进行的近似或舍入(与计算机以二进制计算有关),所以导致结果会有丝毫的偏差,而涉及金额的计算是绝对不予许存在偏差的。我们可以使用BigDecimal来表示金额,或者是通过将金额的单位变小用整数来表示金额。

浮点数运算参考:https://blog.csdn.net/qq_37236745/article/details/83513418

BigDecimal参考:https://blog.csdn.net/qq_35868412/article/details/89029288

coding:

public class Main {
    public static void main(String[] args) {
        //1.浮点类型数据运算产生误差
        System.out.println(0.1+0.2);//0.30000000000000004
		//2.使用BigDecimal
        BigDecimal bd1 = new BigDecimal("36");
        BigDecimal bd2 = new BigDecimal("12");
        System.out.println("加:"+bd1.add(bd2));
        System.out.println("减:"+bd1.subtract(bd2));
        System.out.println("乘:"+ bd1.multiply(bd2));
        System.out.println("除:"+ bd1.divide(bd2));
        /**
         * 加:48
         * 减:24
         * 加法:432
         * 加法:3
         */
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值