美文网首页
BigDecimal类型转化心得

BigDecimal类型转化心得

作者: dsjaikdnsajdnua | 来源:发表于2019-06-04 14:52 被阅读0次

在从数据库查询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)转化出来的字符串是符合要求的。但是前提是要定义好足够长度的整数位和小数位。

相关文章

网友评论

      本文标题:BigDecimal类型转化心得

      本文链接:https://www.haomeiwen.com/subject/xdngtctx.html