自学内容网 自学内容网

Java 学习之 BigDecimal 使用手册

使用手册

1. 初始化

new BigDecimal("0.1")BigDecimal.valueOf("0.1")

2. 比较大小

new BigDecimal("1E+3").compareTo(new BigDecimal("1000.00"))

3. 转字符串

3.1. 普通十进制

new BigDecimal("1E+3").toPlainString()

3.2. 工程字符串

new BigDecimal("1E+3").toEngineeringString()

3.3. 格式化

字符含义示例
0数字,不足补 0#.00
#数字,不足不补#.##
.小数分割#.00
,千分位#,000.00
%百分号#.00%
E科学计数法#.00E0
-负数
;分割正负
\转义

1. 问题

1.1. 精度丢失问题

建议使用 new BigDecimal("0.1")BigDecimal.valueOf 方法来初始化

浮点型数据本身存在精度限制,如:BigDecimal param1 = new BigDecimal(0.1); 
它的值可能并非预期的 0.1,而是由于二进制转换导致的近似值。

1.2. 科学计数法问题

1.2.1. 数值过大或者过小

1.2.2. stripTrailingZeros

调用 stripTrailingZeros() 方法 && 小数位都是 0 && ≥1000 时,如:new BigDecimal("1000.00").stripTrailingZeros() 会出现科学计数法 1E3+

此时应使用 toString 转 String 输出会呈现 1E3+,使用toPlainString() 转 String 输出则呈现 1000

1.3. 比较大小问题

建议使用BigDecimalcompareTo 方法,只比较值的大小,不考虑精度

`BigDecimal` 的 `equals` 方法会比较两个对象的值和精度,精度不同,则被认为是两个不同的对象。

原文地址:https://blog.csdn.net/DreamStar2560/article/details/144339328

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!