Թվային արժեքը JavaScript-ում
JavaScript-ում Number Տիպը
JavaScript-ում թվերը ներկայացվում են միատեսակ number տիպով, որը ընդգրկում է ամբողջ, կոտորակային, դրական, բացասական և հատուկ թվային արժեքներ։ Ի տարբերություն շատ ծրագրավորման լեզուների՝ JavaScript-ում չկա տարանջատում int, float կամ double-ի միջև։
JavaScript-ի բոլոր թվերը պահվում են որպես 64-bit floating point արժեքներ՝ համաձայն IEEE 754 ստանդարտի։ Սա նշանակում է, որ նույնիսկ ամբողջ թվերը տեխնիկապես float-եր են։
let int = 42;
let float = 3.14;
let negative = -100;
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof NaN; // 'number'
typeof Infinity; // 'number'
Նույնիսկ NaN և Infinity համարվում են number։
Արժեք | Նկարագրություն |
NaN | Սխալ հաշվարկի արդյունք |
Infinity | Անսահման մեծ թիվ |
-Infinity | Անսահման փոքր թիվ |
Number.MAX_VALUE | Ամենամեծ թիվ, որ կարող է ներկայացվել |
Number.MIN_VALUE | Ամենափոքր (բայց ոչ բացասական) թիվ |
Number.MAX_SAFE_INTEGER | 2^53 - 1 |
Number.MIN_SAFE_INTEGER | -(2^53 - 1) |
Number.EPSILON | Մինիմալ տարբերությունը 1-ի և հաջորդ թվի միջև |
NaN === NaN // false (!)
isNaN(NaN) // true
Number.isNaN(NaN) // true
Boolean(0); // false
Boolean(NaN); // false
Boolean(42); // true
Boolean(-1); // true
Number("42"); // 42
Number("3.14"); // 3.14
Number("abc"); // NaN
parseInt("42px"); // 42
parseFloat("3.14m"); // 3.14
'5' + 1 // "51"
'5' - 1 // 4
true + 1 // 2
null + 1 // 1
undefined + 1 // NaN
let n = 123.456;
n.toFixed(2); // "123.46"
n.toPrecision(4); // "123.5"
n.toExponential(1); // "1.2e+2"
Math.PI; // 3.14159...
Math.round(4.7); // 5
Math.floor(4.9); // 4
Math.ceil(4.1); // 5
Math.pow(2, 3); // 8
Math.sqrt(9); // 3
Math.random(); // պատահական թիվ 0-ից 1 միջակայքում
Math.max(1, 5, 10); // 10
Math.min(1, 5, 10); // 1
Եթե պետք է աշխատես շատ մեծ թվերի հետ, որոնք գերազանցում են Number.MAX_SAFE_INTEGER-ը, օգտագործիր BigInt։
Թվային արժեքները JavaScript-ում համարվում են primitive types, սակայն երբ մենք փորձում ենք դրանց վրա կանչել մեթոդներ (toFixed, toString և այլն), JavaScript-ը ներքուստ ժամանակավոր կերպով դրանք վերածում է Number օբյեկտի։
let n = 42;
n.toFixed(2); // "42.00"
Վերևի օրինակում n-ը իրականում primitive է, բայց JavaScript-ը ներքին մակարդակում կատարում է հետևյալը՝
new Number(42).toFixed(2);
Սա կոչվում է autoboxing։ Այս գործընթացը թույլ է տալիս թվերին պահել իրենց lightweight բնույթը, բայց միևնույն ժամանակ ունենալ օբյեկտային ֆունկցիոնալություն։
Դու նաև կարող ես ուղղակիորեն ստեղծել Number օբյեկտ, բայց դա հաճախ խորհուրդ չի տրվում՝
let n1 = 42;
let n2 = new Number(42);
console.log(typeof n1); // "number"
console.log(typeof n2); // "object"
console.log(n1 === n2); // false
Եզրակացություն՝ աշխատիր primitive թվերով, իսկ Number օբյեկտն օգտագործիր միայն հատուկ դեպքերում։