BigDecimal常用示例

简介: BigDecimal常用示例

保留两位小数

/**
 * 保留两位小数 
 */
@org.junit.Test
public void testBigDecimal01() {
    double num=15.252524;
    //方式一
    DecimalFormat df1 = new DecimalFormat("0.00");
    String str = df1.format(num);
    System.out.println(str);
    //方式二
    // #.00 表示两位小数   #.0000四位小数
    DecimalFormat df2 =new DecimalFormat("#.00");
    String str2 =df2.format(num);
    System.out.println(str2);
    //方式三
    //%.2f    %. 表示 小数点前任意位数   2 表示两位小数 格式后的结果为f 表示浮点型
    String result = String.format("%.2f", num);
    System.out.println(result);   
}

image.pngimage.png

格式化

由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。

@org.junit.Test
public void testBigDecimal02() {
    NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
    NumberFormat percent = NumberFormat.getPercentInstance();  //建立百分比格式化引用
    percent.setMaximumFractionDigits(3); //百分比小数点最多3位
    BigDecimal loanAmount = new BigDecimal("170.5896"); //贷款金额
    BigDecimal interestRate = new BigDecimal("0.008"); //利率
    BigDecimal interest = loanAmount.multiply(interestRate); //相乘
    System.out.println("贷款金额:\t" + currency.format(loanAmount));
    System.out.println("利率:\t" + percent.format(interestRate));
    System.out.println("利息:\t" + currency.format(interest));
}

image.png

BigDecimal比较

BigDecimal是通过使用compareTo(BigDecimal)来比较的,小于:-1,等于:0,大于:1。

注意:

1.不能使用equals方法来比较大小。

2.使用BigDecimal的坏处是性能比double和float差,在处理庞大,复杂的运算时尤为明显,因根据实际需求决定使用哪种类型。

具体比较情况如下:

@org.junit.Test
public void testBigDecimal03() {
    BigDecimal a = new BigDecimal("5");
    BigDecimal b = new BigDecimal("8");
    BigDecimal c = new BigDecimal("5");
    int result1 = a.compareTo(b);
    int result2 = a.compareTo(c);
    int result3 = b.compareTo(a);
    System.out.println(result1);
    System.out.println(result2);
    System.out.println(result3);  
}

image.png

目录
相关文章
|
22天前
如何对BigDecimal进行非0判断
如何对BigDecimal进行非0判断
21 3
|
2月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
5月前
|
Java API
BigDecimal基本用法详解
BigDecimal基本用法详解
38 1
|
9月前
|
Java API
BigDecimal类型讲解
如何在Java中使用BigDecimal数字类型,你真的掌握了嘛??
67 0
|
2月前
|
Java 数据库
Java中BigDecimal比较大小的方法BigDecimal转换为Integer
Java中BigDecimal比较大小的方法BigDecimal转换为Integer
5 0
|
4月前
|
Java API
使用 BigDecimal 的正确方式
使用 BigDecimal 的正确方式
32 1
|
9月前
|
Java API
关于BigDecimal你不知道的那些事儿
在我们平时开发中,涉及到精度计算的逻辑肯定会用到BigDecimal,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。 ————————————————
43 0
关于BigDecimal你不知道的那些事儿
|
6月前
|
Java
Java对double值进行四舍五入,保留两位小数的几种方法
Java对double值进行四舍五入,保留两位小数的几种方法
|
7月前
|
JSON 数据格式
Gson转换json数据为HashMap时long类型变为double问题解决
今天再使用Gson处理json数据的时候碰到了一个问题 , 当我使用如下代码解析json数据的时候 , requestTime就变为了double类型
125 0
|
8月前
|
存储 Java
BigInteger与BigDecimal类
BigInteger与BigDecimal类
44 0