Maison > interface Web > js tutoriel > javascript -valeur de type numéro

javascript -valeur de type numéro

高洛峰
Libérer: 2017-02-25 16:16:35
original
1280 Les gens l'ont consulté

Introduction générale

JavaScript utilise le format IEEE754 en interne pour représenter les nombres, il ne fait donc pas de distinction entre les nombres entiers et les nombres à virgule flottante et est stocké sous la forme de 64 Nombres à virgule flottante de 1 à 2 bits. C’est-à-dire qu’à l’intérieur de JavaScript, il n’y a aucune décimale. Cependant, certaines opérations doivent être effectuées avec des entiers, c'est pourquoi JavaScript convertit parfois les nombres à virgule flottante de 64 bits en entiers de 32 bits avant d'effectuer des opérations.

Entier

JavaScript fournit quatre méthodes de représentation pour les entiers :

1. valeurs avec le préfixe 0b, une erreur sera signalée si un nombre autre que 0 ou 1 apparaît

2. Octal : Valeurs avec le préfixe 0o, ou 0 suivi d'un nombre (0-7 ). S'il dépasse la plage numérique mentionnée précédemment, le premier chiffre 0 sera ignoré et traité comme un nombre décimal

Remarque : les littéraux octaux ne sont pas valides en mode strict et entraîneront une erreur des moteurs JavaScript prenant en charge ce mode.

3. Hexadécimal : il y a un préfixe de 0x, suivi de n'importe quel chiffre hexadécimal (0~9 et A~F). Les lettres peuvent être majuscules ou minuscules. Si la plage est dépassée, une erreur sera générée. rapporté

4. Décimal


var num2 = 0b11;
 console.log(num2); //3
 var num2 = 0b12;
 console.log(num2); //报错
 var num8 = 0o76;
 console.log(num8); //02
 var num8 = 0o78;
 console.log(num8); //报错
 var num16 = 0x2a;
 console.log(num16); //42
 var num16 = 0x2h;
 console.log(num16) //报错
Copier après la connexion


Nombre à virgule flottante

Le nombre dit à virgule flottante, c'est-à-dire que la valeur doit contenir un point décimal et qu'il doit y avoir au moins un chiffre après le point décimal. Différent des nombres entiers, les nombres à virgule flottante ne peuvent être exprimés qu'en décimal.

La précision des nombres à virgule flottante est bien inférieure à celle des nombres entiers, vous devez donc être prudent lors de la conception d'opérations avec des nombres à virgule flottante

Par exemple :


 console.log(0.1 + 0.2 == 0.3); //false 0.30000000000000004
 console.log(0.6/0.2); //2.9999999999999996
Copier après la connexion


Notation scientifique

Pour ceux extrêmement valeurs petites et extrêmement petites, elle peut être représentée par e Une représentation numérique à virgule flottante exprimée en notation scientifique. La valeur exprimée en notation e est égale à la valeur devant e multipliée par la puissance exponentielle de 10

Dans les deux cas suivants, JavaScript convertira automatiquement la valeur en notation scientifique. Dans les autres cas, il le fera. être exprimé directement sous forme littérale.

1. Il y a plus de 21 chiffres avant la virgule décimale


 console.log(1234567890123456789012);// 1.2345678901234568e+21
 console.log(123456789012365648787); //123456789012365660000 
Copier après la connexion


2. plus de 5 chiffres après la virgule décimale Bits


 console.log(0.0000006);//6e-7
 console.log(0.000006); //0.000006
Copier après la connexion


Plage de valeurs

En raison de limitations de mémoire, ECMAScript ne peut pas enregistrer toutes les valeurs du monde, il y a donc des valeurs maximales et minimales

La valeur minimale est stockée dans Number.MIN_VALUE, cette valeur est 5e-324

La valeur maximale est stockée dans Number.MAX_VALUE , cette valeur est 1.7976931348623157e 308


 console.log(Number.MIN_VALUE) //5e-324
 console.log(Number.MAX_VALUE); //1.7976931348623157e+308
Copier après la connexion


Si le nombre dépasse la valeur maximale, javascript renverra Infinity, appelé débordement direct ; s'il est égal ou supérieur à la valeur négative minimale -1023 (c'est-à-dire très proche de 0), JavaScript convertira directement ce nombre en 0, ce qui est appelé débordement négatif (underflow)

Si vous voulez être sûr de vérifier si une valeur numérique est finie, vous pouvez utiliser la fonction isFinite(). Cette fonction renvoie vrai lorsque l'argument est compris entre les valeurs minimale et maximale


 var result = Number.MAX_VALUE + Number.MAX_VALUE;
 console.log(isFinite(result)); //false
Copier après la connexion


Valeurs spéciales

1, 0 et -0

Ces deux 0 sont équivalents dans le cas des grands logarithmes


 -0 === +0; //true
 0 === -0; //true
 0 === +0; //true
Copier après la connexion


Mais il est différent lorsqu'il est utilisé comme dénominateur

1/-0 == 1/ 0; //false

2.

Infini signifie « infini » et est utilisé pour représenter deux scénarios. L’une est qu’une valeur positive est trop grande ou qu’une valeur négative est trop petite pour être représentée ; l’autre est qu’une valeur non nulle est divisée par 0 pour obtenir l’infini.


 Math.pow(2,Math.pow(2,100));//Infinity
 1/0;//Infinity
Copier après la connexion


Le résultat de l'opération Infinity ne peut être que lui-même, 0 ou NaN


* Infinity;//Infinity
- Infinity;//-Infinity
+ Infinity;//Infinity
/ Infinity;//0
 Infinity / 2;//Infinity
 Infinity * Infinity;//Infinity
 Infinity - Infinity;//NaN
 Infinity + Infinity;//Infinity
 Infinity / Infinity;//NaN
Copier après la connexion


3.NaN

Cette valeur représente un opérande censé renvoyer une valeur. . Cas où aucune valeur numérique n'est renvoyée

NaN n'est égal à aucune valeur, y compris elle-même, et toute opération impliquant NaN renvoie NaN


 5 - 'x'; //NaN
 Math.acos(2); //NaN
 0 / 0; //NaN
 NaN == NaN;//false
 NaN == Infinity;//false
Copier après la connexion

.

NaN n'est pas un type de données indépendant, mais une valeur spéciale. Son type de données appartient toujours à Number

typeof NaN; //number

La méthode isNaN peut être utilisée. Déterminez si une valeur est NaN, cependant, isNaN n'est valable que pour les valeurs numériques. Si d'autres valeurs sont transmises, elles seront d'abord converties en valeurs numériques. Par exemple, lorsqu'une chaîne est transmise, la chaîne sera d'abord convertie en NaN, donc true sera renvoyé à la fin. Cela doit faire l'objet d'une attention particulière. En d’autres termes, la valeur pour laquelle isNaN est vrai ne peut pas être NaN, mais une chaîne.


 isNaN('Hello') // true
 // 相当于
 isNaN(Number('Hello')) // true
Copier après la connexion


Une façon plus fiable de juger NaN est de tirer parti du fait que NaN est la seule valeur en javascript qui n'est pas égal à lui-même. Portez un jugement


 function isNaN(value){
 return value != value;
 }
Copier après la connexion


Conversion du système numérique

Il existe 3 fonctions qui peuvent convertir des valeurs non numériques en valeurs numériques : Number(), parseInt() et parseFloat(). Parmi eux, Number() peut convertir n'importe quel type de valeur en valeur numérique, tandis que parseInt() et parseFloat() ne sont utilisés que pour convertir des chaînes en nombres

Number()

Règles de conversion :

1 S'il s'agit d'une valeur booléenne, vrai et faux seront convertis respectivement en 1 et 0

2. une valeur nulle, 0

3、如果是undefined,返回NaN

4、如果是字符串,遵循以下规则:

(1)若字符串只包含十进制或十六进制数字,则转成十进制的数字

注意:Number()不识别八进制数字的字符串,会按照十进制数字处理

字符串'1.2.'不会报错,但数字1.2.会报错

(2)若字符串为空字符串或空格字符串,则转成0

(3)其他情况的字符串,则转成NaN


Number(true) //1
 Number(null) //0
 Number(undefined) //NaN
 Number("0123") //123
 Number("0x123") //291
 Number("0.2") //0.2
 Number("") //0
 Number("asd") //NaN
Copier après la connexion


parseInt()

parseInt()专门用于把字符串转换成整数。在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符


 console.log(parseInt(' 123.8px'));//123
 console.log(parseInt(' 123.8 '));//123
 console.log(parseInt(' -123.8px'));//-123
 console.log(parseInt('a123.8px'));//NaN
 console.log(parseInt('0 123.8px'));//0
Copier après la connexion


注意:在ECMAScript5中,parseInt()已经不具备解析八进制的能力。例如八进制“070”,会忽略前面的“0”,得到十进制的70

为了消除在使用parseInt()函数时可能导致的上述困惑,可以为这个函数提供第二个参数:转换时使用的基数(多少进制)


 parseInt("070") //70
 parseInt("070",8) //56
Copier après la connexion


parseFloat()

parseFloat()专门用于字符串转换浮点数。同样地,解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止


console.log(parseFloat(' 0123.px'));//123
 console.log(parseFloat(' 123.px'));//123
 console.log(parseFloat(' 123.1px'));//123.1
 console.log(parseFloat(' 123.1.2px '));//123.1
 console.log(parseFloat(' -123.0px'));//-123
 console.log(parseFloat('.123.1px'));//0.123
 console.log(parseFloat('0 123px'));//0
Copier après la connexion


注意:parseFloat()只解析十进制,所以十六进制的字符串始终会被转换成0。因此也没有第二个参数用来指定基数

 parseFloat("0xA") //0

注意:Number('')的结果是0,parseInt('')和parseFloat('')的结果是NaN

更多Number类型值相关文章请关注PHP中文网!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal