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
*/
}
}