ero interessato ad avere la seguente funzione getNumberOfDecimalPlace:determinare il numero di decimali Place utilizzando BigDecimal
System.out.println("0 = " + Utils.getNumberOfDecimalPlace(0)); // 0
System.out.println("1.0 = " + Utils.getNumberOfDecimalPlace(1.0)); // 0
System.out.println("1.01 = " + Utils.getNumberOfDecimalPlace(1.01)); // 2
System.out.println("1.012 = " + Utils.getNumberOfDecimalPlace(1.012)); // 3
System.out.println("0.01 = " + Utils.getNumberOfDecimalPlace(0.01)); // 2
System.out.println("0.012 = " + Utils.getNumberOfDecimalPlace(0.012)); // 3
Posso sapere come posso implementare getNumberOfDecimalPlace, utilizzando BigDecimal?
Il seguente codice non funziona come previsto:
public static int getNumberOfDecimalPlace(double value) {
final BigDecimal bigDecimal = new BigDecimal("" + value);
final String s = bigDecimal.toPlainString();
System.out.println(s);
final int index = s.indexOf('.');
if (index < 0) {
return 0;
}
return s.length() - 1 - index;
}
Di seguito vengono stampati:
0.0
0 = 1
1.0
1.0 = 1
1.01
1.01 = 2
1.012
1.012 = 3
0.01
0.01 = 2
0.012
0.012 = 3
Tuttavia, per il caso del 0, 1.0, non funziona bene. Mi aspetto, "0" come risultato. Ma si sono rivelati "0.0" e "1.0". Ciò restituirà "1" come risultato.
Stai pianificando che il tuo parametro di input sia BigDecimal o solo internamente per utilizzare BigDecimal? Causa nel tuo esempio di codice, il parametro di input sarebbe solo un doppio. –
Ho trovato le soluzioni qui utili per l'implementazione della funzione: http://stackoverflow.com/questions/6264576/number-of-decimal-digits-in-a-double – JackDev
Which "Utils" è questo? –