[JAVA] [Petite histoire] Nom de la méthode trompeur (une histoire qui a perdu du temps à cause de setScale.

introduction

La classe Big Decimal est difficile à utiliser, sauf si vous êtes impliqué dans un travail qui traite de la précision des nombres. Alors, quand j'ai joué avec pour la première fois depuis longtemps, j'étais tellement accro que j'ai perdu mon temps.

Méthodes connexes

BigDecimal setScale(int newScale) setScale(int newScale, int roundingMode) setScale(int newScale, RoundingMode roundingMode)

Spécifications du programme

Afficher le résultat du traitement avec un chiffre après la virgule décimale

programme

public static void main (String[] args) {
    
    BigDecimal deci = new BigDecimal("1.2345");
    
    System.out.println("deci 1:" + deci);
    
    deci.setScale(1, BigDecimal.ROUND_DOWN);
    
    System.out.println("deci 2:" + deci);
    
}

Résultat d'exécution

deci 1:1.2345 deci 2:1.2345

??? D'ailleurs, avec ce résultat d'exécution, ceux qui sont polis seront d'abord JavaDoc, et ceux qui le connaissent seront "Ah ...", mais j'ai gaspillé ceci et cela, Il a fallu environ 20 minutes pour le résoudre. .. .. (> <). Pourquoi? Quand. .. ..

Programme 2

public static void main (String[] args) {
	
	BigDecimal deci = new BigDecimal("1.2345");
	
	System.out.println("deci     1 :" + deci);
	
	deci.setScale(1, BigDecimal.ROUND_DOWN);
	
	System.out.println("deci     2 :" + deci);

	BigDecimal deciDecci = deci.setScale(1, BigDecimal.ROUND_DOWN);

	System.out.println("deciDecci  :" + deciDecci);
}

Résultat d'exécution 2

deci 1 :1.2345 deci 2 :1.2345 deciDecci :1.2

Conclusion

Après tout, setScale était une méthode qui renvoyait une valeur de retour plutôt que de modifier le contenu de l'instance. .. .. Je pensais que je voulais qu'il soit nommé comme toString (), mais j'aurais dû regarder attentivement JavaDoc une fois. Il existe différents ensembles et setXXX dans la classe Calendar et ainsi de suite.

Recommended Posts

[Petite histoire] Nom de la méthode trompeur (une histoire qui a perdu du temps à cause de setScale.
Une histoire qui a mis du temps à établir une connexion
Une histoire sur le fait d'avoir du mal à construire PHP 7.4 sur CentOS 8 de GCE
Comment créer une méthode
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
Ajouter un horodatage au nom de fichier JAR dans Gradle
Écrivons un code facile à maintenir (Partie 2) Nom
Comment faire fonctionner IGV en utilisant la communication par socket, et l'histoire de la création d'un Ruby Gem en utilisant cette méthode