Removing trailing zeros from BigDecimal in Java

前端 未结 6 1210
被撕碎了的回忆
被撕碎了的回忆 2020-11-30 05:39

I need to remove trailing zeros from BigDecimal along with RoundingMode.HALF_UP. For instance,

Value        Output

15.3456  <=&         


        
6条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-30 05:55

    Note that stripTrailingZeros() doesn't do very well either.

    On this:

    val = new BigDecimal("0.0000").stripTrailingZeros();
    System.out.println(val + ": plain=" + val.toPlainString());
    
    val = new BigDecimal("40.0000").stripTrailingZeros();
    System.out.println(val + ": plain=" + val.toPlainString());
    
    val = new BigDecimal("40.50000").stripTrailingZeros();
    System.out.println(val + ": plain=" + val.toPlainString());
    

    Output (Java 7):

    0.0000: plain=0.0000
    4E+1: plain=40
    40.5: plain=40.5
    

    Output (Java 8):

    0: plain=0
    4E+1: plain=40
    40.5: plain=40.5
    

    The 0.0000 issue in Java 7 is fixed in Java 8 by the following java fix.

提交回复
热议问题