in corso questo semplice programma:Perché il nuovo BigDecimal ("0.0"). StripTrailingZeros() ha una scala di 1?
public static void main(final String... args)
{
System.out.println(BigDecimal.ZERO.scale());
System.out.println(new BigDecimal("0").scale());
System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
uscite:
0
0
1
0
La mia domanda è piuttosto semplice: perché non la terza uscita println
0
? Quello sembrerebbe logico ...
EDIT: OK, così, questo è un bug molto antiche:
e di fatto, si "lavora" per qualsiasi numero di zeri: new BigDecimal("0.0000").stripTrailingZeroes().scale()
è 4!
possibile duplicato di [Chiarimento sul comportamento di BigDecimal.stripTrailingZeroes()] (http://stackoverflow.com/questions/5239137/clarification-on-behavior-of-bigdecimal-striptrailingzeroes) –
La domanda a cui Andrew sta collegando è in effetti lo stesso, ma sii consapevole che la risposta accettata non è corretta. Il comportamento che vedi è il bug citato nell'altra risposta: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 – jarnbjo