JAVA8 计算保留两位小数

引言

在实际的软件开发中,经常需要对数值进行处理,并且需要保留指定的小数位数。在JAVA8中,提供了多种方式来进行数值计算并保留两位小数。本文将介绍JAVA8中常用的数值计算和保留两位小数的方法,并提供代码示例。

一、数值计算方法

在JAVA8中,可以使用BigDecimal类进行数值计算,该类提供了丰富的数值计算方法,并且可以控制小数位数。

1. 加法计算

使用BigDecimal的add方法可以进行两个数值的加法计算。

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal sum = num1.add(num2);
System.out.println("Sum: " + sum);

该代码会输出:Sum: 15.7

2. 减法计算

使用BigDecimal的subtract方法可以进行两个数值的减法计算。

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal difference = num1.subtract(num2);
System.out.println("Difference: " + difference);

该代码会输出:Difference: 5.3

3. 乘法计算

使用BigDecimal的multiply方法可以进行两个数值的乘法计算。

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal product = num1.multiply(num2);
System.out.println("Product: " + product);

该代码会输出:Product: 54.6

4. 除法计算

使用BigDecimal的divide方法可以进行两个数值的除法计算。

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal quotient = num1.divide(num2, 2, RoundingMode.HALF_UP);
System.out.println("Quotient: " + quotient);

该代码会输出:Quotient: 2.02

5. 求余计算

使用BigDecimal的remainder方法可以求两个数值的余数。

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal remainder = num1.remainder(num2);
System.out.println("Remainder: " + remainder);

该代码会输出:Remainder: 0.1

二、保留两位小数

在进行数值计算后,常常需要保留指定的小数位数。在JAVA8中,可以使用DecimalFormat类来实现对数值的格式化输出。

DecimalFormat decimalFormat = new DecimalFormat("#.##");
double number = 10.589;
String formattedNumber = decimalFormat.format(number);
System.out.println("Formatted Number: " + formattedNumber);

该代码会输出:Formatted Number: 10.59

三、完整代码示例

下面是一个完整的代码示例,演示了使用BigDecimal进行数值计算并保留两位小数的过程。

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class DecimalDemo {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("10.5");
        BigDecimal num2 = new BigDecimal("5.2");

        // 加法计算
        BigDecimal sum = num1.add(num2);
        System.out.println("Sum: " + sum);

        // 减法计算
        BigDecimal difference = num1.subtract(num2);
        System.out.println("Difference: " + difference);

        // 乘法计算
        BigDecimal product = num1.multiply(num2);
        System.out.println("Product: " + product);

        // 除法计算
        BigDecimal quotient = num1.divide(num2, 2, RoundingMode.HALF_UP);
        System.out.println("Quotient: " + quotient);

        // 求余计算
        BigDecimal remainder = num1.remainder(num2);
        System.out.println("Remainder: " + remainder);

        // 保留两位小数
        DecimalFormat decimalFormat = new DecimalFormat("#.##");
        double number = 10.589;
        String formattedNumber = decimalFormat.format(number);
        System.out.println("Formatted Number: " + formattedNumber);
    }
}

四、关系图

下图展示了BigDecimal、DecimalFormat和RoundingMode之间的关系。

erDiagram
    BigDecimal ||..|| DecimalFormat : 使用
    RoundingMode ||..||