BigDecimal类型转化心得

在从数据库查询number类型的数据时,在java对应的就是BigDecimal类型。因为,在转化成字符串类型的时候,精度会发生改变。这里针对BigDecimal转化为字符串类型的一些情况做一下总结。
以下使用了6种方法对(数值0.0001)bigDecimal进行字符串转化。

  1. BigDecimal的intValue方法。
  2. BigDecimal的toPlainString。
  3. BigDecimal的toEngineeringString。
  4. BigDecimal的doubleValue。
  5. BigDecimal的setScale 设置精度然后再toPlainString。
  6. 小数格式化模板DecimalFormat
public class test{
  public static void main(String args[]) {
        BigDecimal bigdecimal = new BigDecimal(0.0001d);
        BigDecimal bigDecimal = (BigDecimal) bigdecimal;
        int intValue = bigdecimal.intValue();
        String toPlainString = bigDecimal.stripTrailingZeros().toPlainString();
        String engineeringString = bigdecimal.toEngineeringString();
        Double doubleValue = bigDecimal.doubleValue();
        String setScaleToPlainString = bigDecimal.setScale(bigdecimal.scale(), RoundingMode.HALF_UP).toPlainString();
        System.out.println("intValue:"+intValue);
        System.out.println("toPlainString:"+toPlainString);
        System.out.println("engineeringString:"+engineeringString);
        System.out.println("doubleValue:"+doubleValue);
        System.out.println("setScaleToPlainString:"+setScaleToPlainString);
        
        NumberFormat nf1 = new DecimalFormat("################################################.###########################################");
        String decimalFormat = nf1.format(doubleValue);
        System.out.println("decimalFormat:"+decimalFormat);
  }
}

对应输出结果:

intValue:0
toPlainString:0.000100000000000000004792173602385929598312941379845142364501953125
engineeringString:0.000100000000000000004792173602385929598312941379845142364501953125
doubleValue:1.0E-4
setScaleToPlainString:0.000100000000000000004792173602385929598312941379845142364501953125
decimalFormat:0.0001
总结

根据上面这种情况。只有最后一种(decimalFormat)转化出来的字符串是符合要求的。但是前提是要定义好足够长度的整数位和小数位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值