1.先说下BigDecimal 的好处
在java中浮点数由double与float表示,他们在计算的时候会出现精度问题,当涉及到钱的计算时,我们便不能使用double或者float进行计算,这时我们需要使用BigDecimal。
2.简单使用 BigDecimal进行计算
public static void main(String[] args) {
BigDecimal bl = new BigDecimal("100.369");
BigDecimal b2 = new BigDecimal("1.369");
String s = new String("2");
BigDecimal bigDecimal = bl.add(b2); //加
BigDecimal bigDecimal = bl.subtract(b2); //减
BigDecimal bigDecimal = bl.multiply(b2); //乘
BigDecimal bigDecimal = bl.divide(b2); //除
System.out.println(bigDecimal);
}
3.精度的控制
保留精度:
//取一位整数
System.out.println(newDecimalFormat("0").format(pi)); //3
//取一位整数和两位小数
System.out.println(newDecimalFormat("0.00").format(pi)); //3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
//取所有整数部分
System.out.println(newDecimalFormat("#").format(pi)); //3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16%
longc=299792458; //光速
//显示为科学计数法,并取五位小数
System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8
//显示为两位整数的科学计数法,并取四位小数
System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7
//每三位以逗号进行分隔。
System.out.println(newDecimalFormat(",###").format(c)); //299,792,458
//将格式嵌入文本
System.out.println(newDecimalFormat("光速大小为每秒,###米。").format(c));
ps:官方api中给出的解决方案是使用string类型的构造函数,能保证精度不丢失
此文章仅限技术参考,用于个人笔记使用。