344 votes

Comment puis-je supprimer la partie décimale d'un nombre JavaScript ?

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 ?

587voto

alex Points 186293

Vous pourriez utiliser...

...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.

Lecture obligatoire - Ce que tout informaticien devrait savoir sur l'arithmétique à virgule flottante .

43 votes

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.

1 votes

@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.

2 votes

Les éléments suivants montrent que cette réponse est instable : > (2.305*100)|0 > 230 > (2.3*100)|0 > 229

38voto

Floyd Pink Points 4438

Vous pouvez également faire

parseInt(a/b)

19 votes

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 .

4 votes

Il n'utilise pas non plus parseInt() pour son but, qui est de prendre un nombre dans une chaîne de caractères et de retourner un Number .

19voto

Navdeep Singh Points 5

Utilisez Math.round() fonction.

Math.round(65.98) // will return 66 
Math.round(65.28) // will return 65

17 votes

Pour être complet, il s'agit d'un simple JavaScript, et non d'une requête.

1 votes

$.round = Math.round ;)

1 votes

Math.round ne répond pas vraiment à la question. La question était de savoir comment ne pas tenir compte de la partie décimale du nombre. Dans l'exemple montré par la réponse ici, le PO voudrait retourner 65 dans les deux cas. Math.round rendra 66 ou 65 (comme indiqué ci-dessus).

12voto

Dave Newton Points 93112

Utilisez Math.round() .

(La réponse d'Alex est meilleure ; j'ai fait une supposition :)

0voto

Zak Points 11

Je n'ai pas vu que vous vouliez dire JavaScript. C'est du Java normal. Désolé pour la confusion.

*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.com

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.

Powered by:

X