Java基础应用之运算符(更精确的使用浮点数)

Java基础应用之运算符(更精确的使用浮点数)
实例运行结果:


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

实现过程:

创建AccuratelyFloat类,在该类的主方法中创建double类型的浮点数变量输出它们相减的运算结果,然后以BigDecimal类的实例再一次完成同样的运算,对比运行结果哪个更精确。

import java.math.BigDecimal;

public class AccuratelyFloat {

    public static void main(String[] args) {

        double money = 2;// 现有金额

        double price = 1.1;// 商品价格

        double result=money - price;

        System.out.println("非精确计算");

        System.out.println("剩余金额:"+result);// 输出运算结果

        // 精确浮点数的解决方法

        BigDecimal money1 = new BigDecimal("2");// 现有金额

        BigDecimal price1 = new BigDecimal("1.1");// 商品单击

        BigDecimal result1=money1.subtract(price1);

        System.out.println("精确计算");

        System.out.println("剩余金额:"+result1);// 输出精确结果
    }
}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

总结:
本实例在完成浮点数精确计算的过程中使用了BigDecimal类,它用于大数字的精确计算。本实例调用了该类的subtract()方法实现减法运算。下面介绍该类的运算方法。


加法


该方法实现两个BigDecimal类实例对象的加法运算,并将运算结果作为方法的返回值。该方法的声明如下:


public BigDecimal add(BigDecimal augend)


参数说明:


augend:与当前对象执行加法的操作数。


减法


该方法实现两个BigDecimal类实例对象的减法运算,并将运算结果作为方法的返回值。该方法的声明如下:


public BigDecimal subtract(BigDecimal subtrahend)


参数说明:


subtrahend:被当前对象执行减法的操作数。


乘法


该方法实现两个BigDecimal类实例对象的乘法运算,并将运算结果作为方法的返回值。该方法的声明如下:


public BigDecimal multiply(BigDecimal multiplicand)


参数说明:


multiplicand:乘法运算中的乘数。


除法


该方法实现两个BigDecimal类实例对象的除法运算,并将运算结果作为方法的返回值。该方法的声明如下:


public BigDecimal divide(BigDecimal divisor)


参数说明:


divisor:除法运算中的除数。

这里创建BigDecimal类的实例时,在构造方法中一定要使用数字字符串作为参数,如果直接使用浮点数或该类型的变量作为参数,那么构造方法接收的是经过二进制存储的浮点数,那样已经是不精确的浮点数了。

对于商业程序的开发,一定要注意其中的货币运算,因为计算机无法通过二进制精确的表示所有小数,所以计算机中的小数运算会有一定的误差,虽然误差非常小,但是货币运算可能会操作多个有误差的运算结果,长期的数据累计会造成更大的误差,特别是银行使用的系统不允许任何微小的误差,所以我们应熟练掌握BigDecimal类的用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值