在商品金额的计算中,经常会涉及小数运算。例如,某个商品的价格是1.10元,而顾客现有金额2元整。在计算机中所有数字都是使用二进制进行存储的,而二进制无法精确地表示所有的小数,所以使用基本数据类型进行小数运算会有一些误差,本实例将通过BigDecimal类实现精确的小数运算。
BigDecimal类中常用的方法:
1、加法
该方法实现两个BigDecimal类实例对象的加法运算,并将运算结果作为方法的返回值。
格式:public BigDecimal add(BigDecimal augend)
augend:与当前对象执行加法的操作数
2、减法
该方法实现两个BigDecimal类实例对象的减法运算,并将运算结果作为方法的返回值。
格式:public BigDecimal subtract(BigDecimal subtrahend)
subtrahend:与当前对象执行减法的操作数
3、乘法
该方法实现两个BigDecimal类实例对象的乘法运算,并将运算结果作为方法的返回值。
格式:public BigDecimal multiply(BigDecimal multiplicand)
multiplicand:乘法运算中的乘数
4、除法
该方法实现两个BigDecimal类实例对象的除法运算,并将运算结果作为方法的返回值。
格式:public BigDecimal divide(BigDecimal divisor)
divisor:除法运算中的除数
package com.example;
import java.math.BigDecimal;
public class AccuratelyFloat {
/**
* 准确的浮点数操作
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double money=2; //现有金额
double price=1.1;//商品价格
double result=money-price;//两个浮点数直接相减的差
System.out.println("直接相减后的结果:"+result);//直接相减后的结果:0.8999999999999999
//使用BigDecimal类进行运算
BigDecimal money1=new BigDecimal("2");
BigDecimal price1=new BigDecimal("1.1");
BigDecimal result1=money1.subtract(price1);
System.out.println("精确运算后的值:"+result1);//精确运算后的值:0.9
}
}