BigDecimal使用double和float会丢失精度,怎么办?

提问者:帅平 问题分类:微服务

BigDecimal使用double和float会丢失精度,示例代码如下:

1 个回答
Rae
Rae 管理员

在jdk里面关于float和double类型有这样的说明:

①float 和 double 类型,主要是为了科学计算和工程计算而设计的,之所以执行二进制浮点运算,是为了在广泛的数值范围上提供较为精确的快速近和计算。
②并没有提供完全精确的结果,所以不应该被用于精确的结果的场合。
③当浮点数达到一定大的数,就会自动使用科学计数法,这样的表示只是近似真实数而不等于真实数。
④当十进制小数位转换二进制的时候也会出现无限循环或者超过浮点数尾数的长度。

因此我们在线上使用bigdecimal计算金额等信息的时候,需要把数据转换成string类型,再带到bigdecimal里面进行计算

发布于:2个月前 (10-17)
我来回答