近日,做项目的时候处理一个Float类型的数据,因为要显示成 % 的形式,直接*100 的话出现了精度丢失问题。就像这样:
这个时候我们就是需要使用BigDecimal 类了
下面的方法就可以:
BigDecimal re1=new BigDecimal(Float.toString(0.142f));
BigDecimal re2=new BigDecimal(Float.toString(100.00f));
System.out.println(re1.multiply(re2).floatValue());
BigDecimal bigLoanAmount = new BigDecimal("12.11"); //创建BigDecimal对象
BigDecimal bigInterestRate = new BigDecimal("23.15");
BigDecimal bigInterest = bigLoanAmount.multiply(bigInterestRate); //BigDecimal运算
NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化用
percent.setMaximumFractionDigits(3); //百分比小数点最多3位
//利用BigDecimal对象作为参数在format()中调用货币和百分比格式化
System.out.println("Loan amount:\t" + currency.format(bigLoanAmount));
System.out.println("Interest rate:\t" + percent.format(bigInterestRate));
System.out.println("Interest:\t" + currency.format(bigInterest));
BigDecimal a=
new
BigDecimal(
"1.35"
);
对数值取值:
1
.a.getScale(
1
,BigDecimal.ROUND_DOWN);
取一位小数,直接删除后面多余位数,故取值
1.3
.
2
.a.getScale(
1
,BigDecimal.ROUND_UP);
取一位小数,删除后面位数,进一位,故取值
1.4
.
3
.a.getScale(
1
,BigDecimal.ROUND_HALF_UP);
取一位小数,四舍五入,故取值
1.4
.
4
.a.getScale(
1
,BigDecimal.ROUND_HALF_DOWN);
取一位小数,四舍五入,但是
5
也是舍弃,故取值
1.3
.
使用BigDecimal.doubleValue()的方法
上面说的BigDecimal可以对Float格式化,还可以使用new DecimalFormat("##0.00").format(.01); 这个格式化之后就是 0.01