0%

java.math.BigDecimal保留指定位数的有效数字(不算前面的0)

百度百科:从一个数的左边第一个非0数字起,到末位数字止,所有的数字都是这个数的有效数字。
就是一个数从左边第一个不为0的数字数起到末尾数字为止,所有的数字(包括0,科学计数法不计10的N次方),称为有效数字。简单的说,把一个数字前面的0都去掉,从第一个正整数到精确的数位止所有的都是有效数字了。
如:0.0109,前面两个0不是有效数字,后面的109均为有效数字(注意,中间的0也算)。

 BigDecimal类型的小数可以使用MathContext指定有效数字。

1
2
3
4
5
6
7
8
9
/**
* 写法来自StackOverflow的Kru
* https://stackoverflow.com/questions/7572309/any-neat-way-to-limit-significant-figures-with-bigdecimal
*/
System.out.println(new BigDecimal(0.022223).round(new MathContext(3, RoundingMode.HALF_UP)));
// (四舍五入)输出:0.0222

System.out.println(new BigDecimal(144.022223).round(new MathContext(5, RoundingMode.HALF_UP)));
// (四舍五入)输出:144.02
隐藏
推进创文常态化 共建文明襄阳城 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 做文明襄阳人 建文明襄阳城 凝聚文明正能量 筑梦千年古襄阳 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 创建全国文明城市 加快建设汉江流域中心城市 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 讲文明 树新风 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 用微笑融化陌生 用文明美化襄阳 · 🄽🄾5️⃣9️⃣7️⃣2️⃣ · 争当文明使者 播撒文明新风