web-dev-qa-db-fra.com

Java BigDecimal supprimer les nombres décimaux et finaux

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.

18
Zero Cool

Essayez number.toBigInteger().toString()

39
David Z

Utilisez ceci.

BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
38
S.Lott

BigDecimal sans fractions est BigInteger. Pourquoi n'utilisez-vous pas simplement BigInteger?

5
ZZ Coder

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;
}
2
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); 
}
0
Vinayak Patil
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.

0
puneetShanbhag