Maison  >  Article  >  interface Web  >  Explication détaillée du type de numéro numérique JS (tutoriel graphique)

Explication détaillée du type de numéro numérique JS (tutoriel graphique)

亚连
亚连original
2018-05-18 17:13:481305parcourir

Cet article vous donne principalement une analyse détaillée des points de connaissance pertinents du type Nombre numérique JavaScript. Les amis qui sont intéressés par cela peuvent me suivre pour apprendre ensemble.

Question numérotée

Pouvez-vous répondre correctement à toutes les questions suivantes ?

  • 0,1 + 0,2 == 0,3 C'est vrai ?

  • Que signifie e-5 ?

  • Comment exprimer l'octal ?

  • Comment convertir la base ?

  • Comment convertir une chaîne en valeur numérique ou entier ? Et l’inverse ? Comment gérer l'hexadécimal ?

  • Quelle est la valeur de retour de parseInt(0x12, 16) ? Est-ce 0x12 ?

  • Number.MAX_VALUE est la valeur maximale. Qu'est-ce que (nouveau Number(12)).MAX_VALUE ?

  • Comment arrondir en JavaScript ? Comment conserver 3 décimales de précision ?

  • Comment obtenir un numéro aléatoire ? Comment arrondir ? Comment arrondir ?

Méthode de représentation des nombres

Le type de nombre représente un nombre, JavaScript adopte le "format 64 bits double précision défini par la norme IEEE 754" ("double- précision 64 bits (valeurs IEEE 754") représente les nombres.

Contrairement à d'autres langages de programmation (tels que C et Java), JavaScript ne fait pas de distinction entre les valeurs entières et les valeurs à virgule flottante. Tous les nombres sont représentés par des valeurs à virgule flottante en JavaScript, donc une attention particulière. doit être payé lors de l'exécution d'opérations numériques. Problème de progression manquante.

0.1 + 0.2 = 0.30000000000000004;
0.1 + 0.2 == 0.3; // false
// 浮点运算判断相等
var ACCURACY = 1e-5; //定义精度精确到0.00001
var a = 0.1;
var b = 0.2;
var sum = 0.3;
// 判断相差小于精度就认为相等
if (a + b - sum < ACCURACY) {
 console.log(&#39;a+b == sum&#39;);
}

Dans des implémentations spécifiques, les valeurs entières sont généralement traitées comme des variables entières de 32 bits et sont également stockées sous la forme de variables entières de 32 bits dans des implémentations individuelles (telles que certains navigateurs) jusqu'à ce que Il est utilisé pour effectuer certaines opérations qui ne sont pas prises en charge par les entiers 32 bits. Ceci afin de faciliter les opérations sur les bits.

Vous pouvez omettre 0 pour représenter des décimales, ou vous pouvez utiliser la forme exponentielle pour représenter des nombres

.9; // 0.9
1E3 // 1000
2e6 // 2000000
0.1e2 // 10
1e-5 // 0.00001

Nombres dans différentes bases

Méthodes de représentation de différentes bases

Le nombre peut utiliser quatre systèmes numériques : décimal, binaire, octal et hexadécimal. Utilisez uniquement des nombres entiers pour les nombres non décimaux.

  • Représentation binaire : commençant par zéro, suivi d'une lettre latine B minuscule ou majuscule (0b ou 0B)

  • Notation octale : commençant par 0. Si le nombre après 0 n’est pas compris entre 0 et 7, le nombre sera converti en nombre décimal.

  • L'utilisation de la syntaxe octale est interdite en mode strict ECMAScript 5 et sera traitée comme décimale

  • L'utilisation de nombres octaux dans ECMAScript 6 nécessite un Un nombre est préfixé par "0o"

  • Notation hexadécimale : commençant par zéro, suivi d'une lettre latine minuscule ou majuscule X (0x ou 0X)

// 十进制
12345678
42
0777 // 在非严格格式下会被当做八进制处理 (用十进制表示就是511)
// 二进制
var a = 0b100000; // 32
var b = 0b0111111; // 63
var c = 0B0000111; // 7
// 八进制
var n = 0755; // 493
var m = 0644; // 420
var a = 0o10; // ES6 :八进制
// 十六进制
0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF // 81985529216486900
0XA    // 10

Conversion de différentes bases

La conversion de bases utilise principalement la méthode toString() ou la méthode parseInt() de Number :

  • toString() accepte un paramètre entier avec une valeur comprise entre 2 et 36 pour spécifier la base. La valeur par défaut est décimale. Convert Number to String

  • parseInt() Les deux paramètres acceptent un paramètre entier avec une valeur comprise entre. 2 et 36 pour spécifier la base. La valeur par défaut est décimale. Convertir la chaîne en numéro

// toString转换,输入为Number,返回为String
var n = 120;
n.toString(); // "120"
n.toString(2); // "1111000"
n.toString(8); // "170"
n.toString(16); // "78"
n.toString(20); // "60"
0x11.toString(); // "17"
0b111.toString(); // "7"
0x11.toString(12);// "15"
// parseInt转换,输入为String,返回为Number
parseInt(&#39;110&#39;); // 110
parseInt(&#39;110&#39;, 2); // 6
parseInt(&#39;110&#39;, 8); // 72
parseInt(&#39;110&#39;, 16); // 272
parseInt(&#39;110&#39;, 26); // 702
// toString和parseInt结合使用可以在两两进制之间转换
// 将 a 从36进制转为12进制
var a = &#39;ra&#39;; // 36进制表示的数
parseInt(a, 36).toString(12); // "960"
objet numérique Number

L'objet Number est un objet intégré. objet number, qui encapsule une série de constantes et de méthodes liées au nombre.

var na = Number(8); // 8
na = Number(&#39;9.5&#39;); // 9.5
na = new Number(&#39;9.3&#39;); // Number 对象,仅可以使用原型方法
Propriétés de l'objet numérique :

Number对象方法

Number对象方法可以使用 Number. 的形式调用,也可以使用全局调用。

Number.parseFloat() 把字符串参数解析成浮点数,左右等效于一元运算法+
Number.parseInt() 把字符串解析成特定基数对应的整型数字
Number.isFinite() 判断传递的值是否为有限数字
Number.isInteger() 判断传递的值是否为整数
Number.isNaN() 判断传递的值是否为 NaN
Number.isSafeInteger() 判断传递的值是否为安全整数

parseInt() 方法需要注意:

  • parseInt() 参数可以有两个参数:数字字符串和进制

  • 如果第一个参数为非指定进制的数字字符串,则结果为0

  • 如果第一个参数为非字符串,会首先调用该参数的toString()方法转换为字符串

  • 第一个参数中非指定进制可识别的字符会被忽略

  • 如果给定的字符串不存在数值形式,函数会返回一个特殊的值 NaN

  • 如果调用时没有提供第二个参数,则使用字符串表示的数字的进制

parseInt(&#39;123&#39;); // 123
parseInt(&#39;123&#39;, 10); // 123
parseInt(&#39;123&#39;, 8); // 83
parseInt(&#39;123&#39;, 16); // 291
parseInt("11", 2); // 3
parseInt(&#39;0x123&#39;, 10); // 0
parseInt(&#39;0x123&#39;, 16); // 291
parseInt(&#39;0x123&#39;); // 291
// 如果第一个参数不是字符串,会先把第一个参数转成字符串
parseInt(&#39;12&#39;, 16); // 18
parseInt(12, 16); // 18
// toString方法会将数字转换为10进制的字符串
parseInt(0xf, 16); // 21
0xf.toString(); // &#39;15&#39;
parseInt(&#39;15&#39;, 16); // 21
parseInt(&#39;23.56&#39;); // 23
parseInt("hello", 16); // NaN
parseInt("aello", 16); // 174

Number类型原型方法

Number类型原型上还有一些方法来对数字进度进行取舍,这些方法可以被 Number 实例对象调用:

toExponential() 返回一个数字的指数形式的字符串
toFixed() 返回指定小数位数的表示形式
toPrecision() 返回一个指定精度的数字

这些原型方法可以被Number实例对象调用:

var numObj = 12345.6789;
numObj.toExponential(); // "1.23456789e+4"
numObj.toExponential(2); // "1.23e+4"
numObj.toExponential(4); // "1.2346e+4"
numObj.toPrecision();  // "12345.6789"
numObj.toPrecision(2); // "1.2e+4"
numObj.toPrecision(4); // "1.235e+4"
numObj.toFixed();   // 返回 "12346":进行四舍五入,不包括小数部分
numObj.toFixed(1);  // 返回 "12345.7":进行四舍五入
numObj.toFixed(6);  // 返回 "12345.678900":用0填充
(1.23e+20).toFixed(2); // 返回 "123000000000000000000.00"
(1.23e-10).toFixed(2); // 返回 "0.00"
2.34.toFixed(1);   // 返回 "2.3"
-2.34.toFixed(1);   // 返回 -2.3 (由于操作符优先级,负数不会返回字符串)
(-2.34).toFixed(1);  // 返回 "-2.3" (若用括号提高优先级,则返回字符串)

数学对象(Math)

和Number相关的是,JavaScript对象中内置的Math对象,提供了很多数学常数和函数的属性和方法。

属性列表:

Math.E 欧拉常数,也是自然对数的底数, 约等于 2.718
Math.LN2 2的自然对数, 约等于0.693
Math.LN10 10的自然对数, 约等于 2.303
Math.LOG2E 以2为底E的对数, 约等于 1.443
Math.LOG10E 以10为底E的对数, 约等于 0.434
Math.PI 圆周率,一个圆的周长和直径之比,约等于 3.14159
Math.SQRT2 2的平方根,约等于 1.414
Math.SQRT1_2 1/2的平方根, 约等于 0.707

La fonction trigonométrique sin et les autres paramètres en mathématiques sont des radians. S'il s'agit d'un angle, vous pouvez l'utiliser (Math.PI/180)

Math.abs(x) 返回x的绝对值
Math.sign(x) 返回x的符号函数, 判定x是正数,负数还是0
Math.random() 返回0到1之间的伪随机数
Math.floor(x) 返回x向上取整后的值
Math.ceil(x) 返回x向上取整后的值
Math.round(x) 返回四舍五入后的整数.
Math.fround(x) 返回数字的最接近的单精度浮点型表示
Math.trunc(x) 返回x的整数部分,去除小数
Math.sqrt(x) 返回x的平方根
Math.cbrt(x) 返回x的立方根
Math.hypot([x[,y[,…]]]) 返回其参数平方和的平方根
Math.pow(x,y) 返回x的y次幂
min(), max() 返回一个以逗号间隔的数字参数列表中的较小或较大值(分别地)
sin(), cos(), tan() 标准三角函数;参数为弧度
asin(), acos(), atan(), atan2() 反三角函数; 返回值为弧度
sinh(), cosh(), tanh() 双曲三角函数; 返回值为弧度.
asinh(), acosh(), atanh() 反双曲三角函数;返回值为弧度.
pow(), exp(), expm1(), log10(), log1p(), log2() 指数与对数函数

Ce qui précède représente tous les points de connaissances que j'ai. compilé sur le type de numéro numérique JS, j'espère que cela sera utile à tout le monde à l'avenir.

Articles associés :

p5.jsImplémentation de l'arbre de Pythagore (avec code)

jsTutoriel d'utilisation du minuteur d'animation

Comment stocker les valeurs originales et de référence dans JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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