Je dispose des résultats d'une division et je souhaite éliminer la partie décimale du nombre résultant.
Comment puis-je le faire ?
Je dispose des résultats d'une division et je souhaite éliminer la partie décimale du nombre résultant.
Comment puis-je le faire ?
Vous pourriez utiliser...
Math.trunc()
(tronquer la partie fractionnée, voir aussi ci-dessous)Math.floor()
(arrondir à l'inférieur)Math.ceil()
(round up)Math.round()
(arrondir au nombre entier le plus proche)...en fonction de la façon dont vous voulez enlever la décimale.
Math.trunc()
n'est pas encore supporté sur toutes les plates-formes (notamment IE), mais vous pouvez facilement utiliser une balise polyfill pendant ce temps.
Une autre méthode pour tronquer la partie fractionnée avec un excellent support de plate-forme consiste à utiliser une opérateur binaire (.e.g |0
). L'effet secondaire de l'utilisation d'un opérateur binaire sur un nombre est qu'il traitera son opérande comme un nombre entier signé de 32 bits, supprimant ainsi la composante fractionnaire. Gardez à l'esprit que cela peut également fausser les nombres supérieurs à 32 bits.
Vous parlez peut-être aussi de l'imprécision de l'arrondi décimal avec l'arithmétique à virgule flottante.
Gardez à l'esprit que Math.floor()
sera augmentation de valeur numérique lorsque le nombre est négatif . Ainsi, Math.floor(-1.2) -> -2
tandis que Math.floor(1.2) -> 1
. parseInt(-1.2) -> -1
( comme mentionné par @FloydPink ) ne tiendra pas compte de la partie décimale, comme prévu, pour les deux catégories d'utilisateurs. positif et négatif numéros.
@PaulT.Rawkeen Vous pouvez également utiliser un opérateur de type bitwise pour supprimer la partie décimale, mais n'oubliez pas qu'il tronque également à 32 bits.
Les éléments suivants montrent que cette réponse est instable : > (2.305*100)|0 > 230 > (2.3*100)|0 > 229
Notez que parseInt
ne fonctionnera pas de manière fiable pour les grands nombres, parce qu'il fonctionne en convertissant d'abord son argument en une chaîne de caractères, et pour les grands nombres, le résultat utilisera la notation exponentielle. Par exemple : var n = 22222222222222222222222; parseInt(n);
retournera 2
parce que n.toString()
renvoie à 2.2222222222222223e+22
.
Utilisez Math.round()
.
(La réponse d'Alex est meilleure ; j'ai fait une supposition :)
*Je pense que vous devriez utiliser Math.round(number)
Par exemple, si vous voulez faire un programme qui obtient la racine carrée d'un nombre à partir d'une entrée : public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Type in number you wish to be solved.");
System.out.println(Math.round(Math.sqrt(input.nextInt())));
}
Disons que nous avons tapé 169
comme entrée, si vous avez juste utilisé Math.sqrt(number)
il retournerait 13.0
.
Mais si vous l'avez utilisé avec Math.round(number)
il retournerait 13
. Maintenant, si vous voulez qu'il soit arrondi vers le haut ou vers le bas (s'il n'est pas parfaitement carré), vous devez utiliser la formule suivante : Math.ceil(number)
Arrondir vers le haut. Et Math.floor(number)
pour arrondir vers le bas.*
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.