Je travaille avec BigDecimal
et je sais que si je divise je dois utiliser MathContext
et dire qui Scale
et RoundingMode
pour éviter ArithmeticException
comme décrit dans la documentation:Java BigDecimal arrondit nécessaire avec l'addition?
Dans le cas de fracture, le quotient exact pourrait avoir une expansion décimale longue à l'infini ; par exemple, 1 divisé par 3. Si le quotient a un développement décimal non-terminating et que l'opération est spécifiée pour renvoyer un résultat exact, une ArithmeticException est levée.
Dans la méthode, je travaille sur je dois résumer les sommes provenant de notre base de données (qui sont arrondies à 2 décimales) avec des montants provenant d'un service externe, et je ne sais pas la mise à l'échelle exacte de ces montants (probabilités 3 décimales).
Ma question est: est-ce que je peux faire confiance à la méthode d'addition BigDecimal
et l'utiliser sans arrondir et mettre à l'échelle ou c'est une bonne habitude de toujours spécifier l'échelle désirée?
Y a-t-il un cas particulier où l'addition et la soustraction peuvent augmenter ArithmeticException
?
Avez-vous réellement lu la documentation de la méthode add? Il indique clairement que si vous ne définissez pas une échelle elle-même, elle utilisera l'échelle maximale des deux opérandes. Donc "1.123 + 3" utilisera une échelle de 3 pour le résultat par défaut, ce qui est tout ce dont vous avez besoin pour une précision totale. –
@OHGODSPIDERS oui je l'ai lu, mais je veux vraiment être sûr et j'ai encore des doutes à ce sujet. Et je suis curieux de savoir s'il est bon d'utiliser toujours les arrondis ou non. Cela me semble une question raisonnable. – amicoderozer