BigDecimal实战

本文介绍了计算机中浮点数的表示方式以及Java中float和double类型的精度问题。重点讲解了BigDecimal类,它是不可变的、具有任意精度的十进制数,用于解决精度丢失的问题。文章还提到了BigDecimal的precision和scale属性,并与其他如BigInteger的类进行了对比,提供了实际操作中的处理建议。
摘要由CSDN通过智能技术生成

context

在计算机中,通常不能直接来表示小数,而是要将小数分为多个部分(二进制形式)来存储。表示实数的方法有2种:

a. 定点数表示法

b. 浮点数表示法

2种方法的区别在于小数点是否固定。在Java中,float(单精度)和double(双精度)类型的小数都是用浮点数表示法来存储在计算机中,即遵循IEEE-754标准。

通常我们都是通过字面量来赋值:

double a = 0.4;
double b = 0.3;

上面说过了,浮点数最后以二进制形式存储在计算机中,然而有些字面量(十进制数)无法精确转换为二进制形式(毕竟寄存器bit位有限):

double a = 0.4; // 无法精确转换
double b = 0.3; // 无法精确转换

double c = 0.5; // 精确转换
double d = 0.25; // 精确转换

这样一来,在定义浮点数的时候就有可能出现精度丢失,故影响到运算过程的结果:

double a = 0.4;
double b = 0.3;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值