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. 比较大小问题
建议使用BigDecimal
的 compareTo
方法,只比较值的大小,不考虑精度
`BigDecimal` 的 `equals` 方法会比较两个对象的值和精度,精度不同,则被认为是两个不同的对象。
原文地址:https://blog.csdn.net/DreamStar2560/article/details/144339328
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!