Maison  >  Article  >  interface Web  >  Trois méthodes pour convertir des nombres à virgule flottante en entiers à l'aide des compétences javascript_javascript

Trois méthodes pour convertir des nombres à virgule flottante en entiers à l'aide des compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:43:181201parcourir

Résumé

Je ne peux penser qu'à 3 méthodes pour l'instant. Si les lecteurs pensent à d'autres méthodes utiles, vous pouvez également les partager

parseInt
Opérateur de bits
Math.floor Math.ceil

Description

1. parseInt

1. Exemple

parseInt("13nash");//13
parseInt("")// NaN
parseInt("0xA") //10(十六进制)
parseInt(" 13")//13
parseInt("070")//ES3为56(八进制) ES5为70
parseInt(070)//ES3和ES5都为56
parseInt(22.5)//22

2. Règles de conversion :

(1). Selon l'exemple (1), parseInt analysera jusqu'à ce que ce ne soit plus un nombre et s'arrêtera
(2). Selon l'exemple (2), parseInt est NaN lors de l'analyse d'une chaîne vide, pas 0
. (3) Selon l'exemple (3), parseInt peut convertir des nombres hexadécimaux en
décimaux. (4) Selon l'exemple (4), parseInt ignore les espaces dans les chaînes

.

3. Inconvénients :

(1). D'après l'exemple (5), on peut savoir que parseInt est incompatible lors de la conversion de tableaux octaux. ES3 traitera 070 comme une valeur octale, mais ES5 traitera 070 comme une valeur décimale.
(2). D'après les exemples (6) (7), nous pouvons savoir que parseInt convertira d'abord les paramètres en chaînes puis les exécutera en entiers

.

4. Explication : Pourquoi les exécutions de (5) et (6) consistent-elles uniquement à convertir 070 en un entier, mais les résultats sont différents ? C'est également le deuxième point pour résoudre comment obtenir des lacunes.

Parce que j'ai vu dans la documentation officielle que si la chaîne n'est pas une chaîne, alors elle est convertie en une seule. Ce passage. C’est-à-dire que si le paramètre n’est pas une chaîne, il le convertira d’abord en chaîne puis en entier. Par exemple, parseInt(070) dans l'exemple (6) convertit d'abord 070 en chaîne. Vous pouvez essayer 070 "" ou String(070) pour savoir que 070 sera converti en "56" car 070 est un nombre octal. Ensuite, cela devient parseInt("56") et le dernier entier est 56. Que vous soyez sur ES3 ou ES5, c'est le 56

2. Opérateurs de bits

1. Exemple

console.log(0 | "123.45")//123
console.log(0 | 123.45)//123
console.log(0 ^ 123.45)//123
console.log(~~123.45)//123

2. Principe : JavaScript n'a pas de notion d'entiers et tous les types numériques sont des nombres à virgule flottante double précision. Lorsqu'ils utilisent des opérateurs au niveau du bit, ils convertiront d'abord les opérandes en nombres entiers pour faciliter les opérations. Cependant, XORing 0 avec d'autres valeurs ou OU au niveau du bit ne changera pas la valeur de l'opération

3. Math.floor et Math.ceil

1. Exemple

console.log(Math.floor(2.3)//2
console.log(Math.floor(-2.3)//-3
console.log(Math.ceil(2.3)//3
console.log(Math.ceil(-2.3)//-2

2. Les deux sont insuffisants : Math.floor obtient le plus petit entier du nombre tandis que Math.ceil obtient le plus grand entier. Par conséquent, si nous arrondissons -2,3, nous obtiendrons -2, mais en utilisant Math.floor, nous obtiendrons -3. Et 2.3 utilise Math.ceil pour obtenir 3, mais ce que nous voulons, c'est 2.

3.Solution :

//自行定义一个函数
function getInt(val){
return val>0 ? Math.floor(val):Math.ceil(val);
}
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn