Question

Selon Wikipedia , lorsque vous arrondissez un nombre négatif, vous arrondissez le nombre absolu. Donc, par ce raisonnement, -3,5 serait arrondi à -4. Mais lorsque j'utilise java.lang.Math.round (-3.5) renvoie -3. Quelqu'un peut-il s'il vous plaît expliquer cela?

Était-ce utile?

La solution

Selon le javadoc

  

Renvoie le plus long long de la   argument. Le résultat est arrondi à un   entier en ajoutant 1/2, en prenant la   sol du résultat et jeté le   résultat à taper long. En d'autres termes,   le résultat est égal à la valeur de   l'expression:

     

(long) Math.floor (a + 0.5d)

Sur le plan conceptuel, vous arrondissez vers le haut . En d'autres termes, l'entier suivant supérieur à la valeur et -3 est supérieur à -3,5, tandis que -4 est inférieur.

Autres conseils

Il existe une variété de méthodes d’arrondissement; celui que vous regardez est appelé arrondi arithmétique symétrique (comme il est indiqué). La section à laquelle vous faites référence se lit comme suit: "Cette méthode est couramment utilisée dans les applications mathématiques, par exemple en comptabilité. C’est celui qui est généralement enseigné dans les cours de mathématiques élémentaires. " Cela semble indiquer que ce n’est pas une règle qui fait l’objet d’un accord mondial, mais celle qui est la plus commune.

Personnellement, je ne me souviens pas d’avoir appris cette règle à l’école. Mon interprétation de l'arrondissement a toujours été que, 5 est arrondi vers le haut, quel que soit le signe du nombre. Apparemment, les auteurs de Java ont la même compréhension. C’est un arrondi arithmétique asymétrique.

Différents outils et langages utilisent potentiellement différents schémas d'arrondi. Excel utilise apparemment la méthode symétrique.

(Dans l’ensemble, je vous conseillerais de rechercher des informations ailleurs. Si Wikipedia trouve un conflit entre Wikipédia et l’expérience, Wikipédia n’est pas parfait.)

Pour ce que cela vaut, java.math.BigDecimal a des modes d'arrondi sélectionnables si vous avez besoin de plus de contrôle sur ce genre de choses.

L’article Wikipedia que vous citez ne dit pas que c’est le seul moyen de arrondir, mais le moyen habituel de arrondir. Plusieurs solutions sont également mentionnées dans cet article (malheureusement, aucune d’elles ne décrit la méthode d’arrondi de Java, bien qu’elle l’appelle "Arrondi arithmétique asymétrique" pour indiquer le comportement de JavaScript).

Vous devez décider comment vous voulez arrondir vos chiffres, puis utiliser cette méthode. Si l'implémentation de Java correspond à cela, tant mieux. sinon, vous devrez le mettre en œuvre vous-même.

Selon Javadocs:

Renvoie le long le plus proche de l'argument. Le résultat est arrondi à un entier en ajoutant 1/2, en prenant le plancher du résultat et en convertissant le résultat en type long . En d'autres termes, le résultat est égal à la valeur de l'expression:      

(long)Math.floor(a + 0.5d)

Il s’avère que la convention est d’arrondir. Je suppose que Wikipedia est faillible. Il s'avère que Microsoft s'est trompé, cependant, car ils l'ont arrondi à -4 également, ce qui n'est pas conventionnel (j'ai vérifié avec quelqu'un qui a un doctorat en mathématiques).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top