Je suis nouveau dans Java et j'essaie de convertir un BigDecimal (par exemple, 99999999.99) en chaîne, mais sans décimale ni nombre final. De plus, je ne veux pas de virgules dans le nombre et l’arrondi n’est pas nécessaire.
J'ai essayé:
Math.Truncate(number)
mais BigDecimal n'est pas supporté.
Des idées?
Merci beaucoup.
Essayez number.toBigInteger().toString()
Utilisez ceci.
BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
BigDecimal sans fractions est BigInteger. Pourquoi n'utilisez-vous pas simplement BigInteger?
Voici le moyen le plus élégant que j'ai trouvé pour résoudre ceci:
public static String convertDecimalToString (BigDecimal num){
String ret = null;
try {
ret = num.toBigIntegerExact().toString();
} catch (ArithmeticException e){
num = num.setScale(2,BigDecimal.ROUND_UP);
ret = num.toPlainString();
}
return ret;
}
private void showDoubleNo(double n) {
double num = n;
int decimalPlace = 2;
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
System.out.println("Point is "+bd);
}
public static String convertBigDecimalToString(BigDecimal bg) {
System.out.println("Big Decimal Value before its convertion :" + bg.setScale(2, BigDecimal.ROUND_HALF_UP));
String bigDecStringValue = bg.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString();
System.out.println("Big Decimal String Value after removing Decimal places is :" + bigDecStringValue);
return bigDecStringValue;
}
Remarque: j'ai utilisé 'BigDecimal.ROUND_HALF_UP', juste pour être sûr, mode d'arrondi pour arrondir au "plus proche voisin" à moins que les deux voisins ne soient équidistants.