web-dev-qa-db-fra.com

Comment tronquer un BigDecimal sans arrondir

Après une série de calculs dans mon code, j'ai un BigDecimal avec une valeur 0.01954

J'ai ensuite besoin de multiplier ce BigDecimal par 100 et je souhaite que la valeur calculée soit 1.95

Je ne souhaite pas effectuer d'arrondi vers le haut ou vers le bas, je veux juste que les valeurs au-delà de deux décimales soient tronquées

J'ai essayé de mettre l'échelle à 2, mais j'ai reçu un ArithmeticException disant que l'arrondi est nécessaire. Comment définir l'échelle sans spécifier d'arrondi?

32
DJ180

Utilisez soit RoundingMode.DOWN ou RoundingMode.FLOOR .

BigDecimal newValue = myBigDecimal.setScale(2, RoundingMode.DOWN);
57
GriffeyDog

Utilisez la substitution setScale qui inclut RoundingMode:

value.setScale(2, RoundingMode.DOWN);
8
user1676075