Bonsoir. Encore. Cela fait longtemps depuis mon dernier post. .. ..
Dans cet article, je décrirai comment utiliser BigDecimal, qui rend le calcul après la virgule décimale précis en Java. Je ne parlerai pas des raisons pour lesquelles le calcul après la virgule décimale peut être effectué avec précision, j'espère donc que vous pourrez le découvrir par vous-même. J'espère que cela sera utile pour ceux qui veulent calculer avec précision après la virgule décimale.
Maintenant, écrivons à propos de la méthode de description de base Big Decimal. Pour utiliser BigDecimal
.java
import java.math.BigDecimal;
Besoin d'être importé. Puisqu'il s'agit d'une bibliothèque standard, il n'est pas nécessaire de l'apporter de l'extérieur et elle peut être utilisée immédiatement. La méthode de description et l'exemple d'utilisation sont indiqués ci-dessous.
Quatre règles | Méthode de description |
---|---|
Ajouter | add |
Soustraire | subtract |
Multiplier | multiply |
division | divide |
Main.java
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
//Définition de la valeur
int one = 1;
int two = 2;
BigDecimal three = BigDecimal.valueOf(3);
BigDecimal five = BigDecimal.valueOf(5);
//De base
System.out.println(three.add(five));//8
System.out.println(three.subtract(five));//-2
System.out.println(three.multiply(five));//15
System.out.println(three.divide(five));//0.6
//Un peu appliqué
System.out.println(BigDecimal.valueOf(two).add(BigDecimal.valueOf(one)).multiply(three));//9
}
}
Une telle description est possible. De plus, comme le montre l'application de la partie commentaire, il est possible d'écrire plusieurs fois de suite. (J'ai utilisé Big Decimal pendant six mois sans le savoir ...)
De là, le calcul traite de la virgule décimale. Étant donné que la description de ROUND_UP etc. n'est pas recommandée dans Java9 ou version ultérieure, veuillez utiliser la description de UP etc. utilisée dans cet article. BogDecimal vous permet de tronquer ou d'arrondir les valeurs après la virgule décimale. Utilisez la méthode setScale pour ce faire. Dans le premier argument, décrivez le nombre de décimales à contrôler. Par exemple, si le premier argument de setscale est 0, il contrôle le premier chiffre. La méthode de description et l'exemple d'utilisation sont décrits ci-dessous.
Méthode d'arrondi | Méthode de description |
---|---|
Arrondi | HALF_UP |
Rassembler | UP |
Tronquer | DOWN |
Main.java
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
//Définition de la valeur
BigDecimal one = BigDecimal.valueOf(1);
BigDecimal three = BigDecimal.valueOf(3);
BigDecimal num = new BigDecimal("1.567");
//De base
System.out.println(num.setScale(0,RoundingMode.HALF_UP));//2
System.out.println(num.setScale(1,RoundingMode.DOWN));//1.5
System.out.println(num.setScale(2,RoundingMode.UP));//1.57
//Un peu appliqué
System.out.println(one.divide(three).setScale(2,RoundingMode.DOWN));//error
System.out.println(one.divide(three,2,RoundingMode.DOWN));//0.3
}
}
La déclaration et l'affectation de variable sur la 3ème ligne de la définition de valeur sont différentes des 1ère et 2ème lignes. À ce propos, même si vous utilisez BigDecimal, vous ne pourrez peut-être pas gérer parfaitement le point décimal. En guise de contre-mesure, lors de l'utilisation du point décimal dans BigDecimal, il est préférable de le gérer comme une chaîne. Bien qu'il s'agisse d'un type String, il calculera tel quel.
J'ai fait une description spéciale dans la deuxième ligne de l'application. Je vais vous expliquer à ce sujet. Lorsqu'une fraction circulaire se produit dans une division de type BigDecimal (0,3333 dans ce cas ...) J'obtiens une exception pour java.lang.ArithmeticException. En guise de contre-mesure, Big Decimal vous permet d'écrire quelque chose comme la deuxième ligne d'application. Avec cette description, il est possible d'écrire un programme sans lever d'exception.
Une fois que vous avez terminé de calculer le point décimal dans BigDecimal, vous souhaiterez peut-être utiliser cette valeur dans un type primitif. Par conséquent, enfin, je décrirai comment convertir du type BigDecimal en type int ou type double. Le type int et le type double sont présentés à titre d'exemple.
Le type que vous souhaitez convertir | Méthode de description |
---|---|
int | intValue() |
double | doubleValue() |
Main.java
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
//Définition de la valeur
BigDecimal one = BigDecimal.valueOf(1);
BigDecimal num = new BigDecimal("1.567");
int a;
double b;
//Conversion de type
a = one.intValue();
b = num.doubleValue();
}
}
En écrivant de cette manière, il est possible de convertir la valeur calculée par BigDecimal en un type primitif.
Cette fois, j'ai écrit sur la description de base de BigDecimal, qui est souvent utilisée pour effectuer avec précision des calculs après la virgule décimale en Java. Il existe de nombreuses autres méthodes utiles telles que la comparaison grande / petite de la grande décimale et de la puissance de la puissance, veuillez donc les vérifier. Si vous avez une opinion que vous aimeriez en savoir un peu plus, je peux ajouter un article. (J'ai envie d'écrire, mais cela dépend de mon niveau d'occupation ...) S'il y a des erreurs, des expressions étranges ou des parties qui peuvent être décrites plus clairement, ce sera mon étude, alors veuillez commenter. Merci d'avoir lu jusqu'ici.
Recommended Posts