ÙÙØ¬Ø¯ ÙÙØ¹Ø§Ù Ù Ù Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ ÙÙ JavaScript:
- أعداد Ø¹Ø§Ø¯ÙØ© تخزÙÙÙ Ø¨ØµÙØºØ© 64-بت IEEE-754Ø ØªÙØ¹Ø±Ù Ø£ÙØ¶Ùا ب âØ§ÙØ£Ø¹Ø¯Ø§Ø¯ Ø§ÙØ¹Ø´Ø±ÙØ© Ù Ø¶Ø§Ø¹ÙØ© Ø§ÙØ¯ÙØ©â (double precision floating point numbers). ÙØ°Ø§ اÙÙÙØ¹ Ù٠٠ا Ø³ÙØ³ØªØ¹ÙÙ Ù Ø£ØºÙØ¨ اÙÙÙØª ÙØ³ÙØ³ÙØ· عÙÙÙ Ø§ÙØ¶ÙØ¡ ÙÙ ÙØ°Ø§ اÙÙØµÙ.
- أعداد صØÙØØ© ÙØ¨Ùرة (BigInt numbers) ت٠ثÙÙÙ Ø¹Ø¯Ø¯ÙØ§ صØÙØÙا Ù ØªØºÙØ± Ø§ÙØØ¬Ù Ø Ø¥Ø° ÙØ¯ ÙÙØ¬Ø£ Ø¥ÙÙÙØ§ Ø£ØÙاÙÙØ§ ÙØ£Ù اÙÙÙØ¹ Ø§ÙØ³Ø§Ø¨Ù ÙØ§ ÙÙ ÙÙ Ø£Ù ÙØªØ¬Ø§Ùز اÙÙÙÙ Ø© 2^53 أ٠أ٠تÙ٠عÙ‑2^53Ø ÙØ³Ùخصص ÙÙØ°Ø§ اÙÙÙØ¹ ÙØµÙÙØ§ Ø®Ø§ØµÙØ§ Ø¨Ù ÙØ¸Ø±Ùا ÙÙØØ§Ø¬Ø© Ø¥ÙÙÙ ÙÙ ØØ§Ùات خاصة.
ØØ§ÙÙÙØ§Ø ÙÙÙØªÙسع ع٠٠ا ÙØ¹Ø±Ù٠عÙÙØ§Ø ÙÙÙØªÙ٠إÙÙ Ø§ÙØØ¯ÙØ« ع٠اÙÙÙØ¹ Ø§ÙØ£ÙÙØ Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ø§ÙØ¹Ø§Ø¯ÙØ©.
طر٠أخر٠ÙÙØªØ§Ø¨Ø© عدد
تخÙ٠أÙÙØ§ ÙØ±Ùد ÙØªØ§Ø¨Ø© 1 بÙÙÙÙ. Ø§ÙØ·Ø±ÙÙØ© اÙÙØ§Ø¶ØØ© ÙÙ:
let billion = 1000000000;
We also can use underscore _ as the separator:
let billion = 1_000_000_000;
Here the underscore _ plays the role of the âsyntactic sugarâ, it makes the number more readable. The JavaScript engine simply ignores _ between digits, so itâs exactly the same one billion as above.
In real life though, we try to avoid writing long sequences of zeroes. Weâre too lazy for that. Weâll try to write something like "1bn" for a billion or "7.3bn" for 7 billion 300 million. The same is true for most large numbers.
In JavaScript, we can shorten a number by appending the letter "e" to it and specifying the zeroes count:
alert( 7.3e9 ); // 7.3 billions (same as 7300000000 or 7_300_000_000)
let billion = 1e9; // بÙÙÙÙØ ØØ±ÙÙÙØ§: 1 ÙØ¬Ø§Ùب٠9 Ø£ØµÙØ§Ø±
In other words, `e` multiplies the number by `1` with the given zeroes count.
```js
1e3 = 1 * 1000 // e3 means *1000
1.23e6 = 1.23 * 1000000 // e6 means *1000000
ÙÙÙØªØ¨ Ø§ÙØ¢Ù Ø´ÙØ¦Ùا ØµØºÙØ±Ùا Ø¬Ø¯ÙØ§. Ù Ø«ÙÙØ§Ø جزء ٠٠اÙÙ ÙÙÙÙ Ù Ù Ø§ÙØ«Ø§ÙÙØ©:
let ms = 0.000001;
ÙÙ
ا ÙÙ
ÙØ§ سابÙÙØ§Ø ÙÙ
Ù٠استخداÙ
"e" ÙØªØ¬Ùب ÙØªØ§Ø¨Ø© Ø§ÙØ£ØµÙØ§Ø±Ø ÙÙ
ÙÙÙØ§ اÙÙÙÙ:
let ms = 1e-6; // ستة Ø£ØµÙØ§Ø± عÙÙ ÙØ³Ø§Ø± 1
Ø¥Ù ÙÙ
ÙØ§ بعد Ø§ÙØ£ØµÙار ÙÙ 0.000001Ø Ø³ÙØ¬Ø¯ Ø¹Ø¯Ø¯ÙØ§ 6. ÙØ°Ø§ ÙÙÙÙ Ø§ÙØ±ÙÙ
1e-6.
بÙ
عÙÙ Ø¢Ø®Ø±Ø ÙØ¬Ùد رÙÙ
Ø³Ø§ÙØ¨ بعد "e" ÙØ¹Ù٠اÙÙØ³Ù
Ø© عÙÙ 1 Ù
ØªØ¨ÙØ¹Ùا Ø¨ÙØ¹Ø¯Ø¯ Ø§ÙØ£ØµÙار اÙÙ
عطÙ:
// -3 باÙÙØ³Ù
Ø© عÙÙ 1 Ù
ØªØ¨ÙØ¹Ùا ب 3 Ø£ØµÙØ§Ø±
1e-3 = 1 / 1000 (=0.001)
// -6 باÙÙØ³Ù
Ø© عÙÙ 1 Ù
ØªØ¨ÙØ¹Ùا ب 6 Ø£ØµÙØ§Ø±
1.23e-6 = 1.23 / 1000000 (=0.00000123)
Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ø§ÙØ³Øª Ø¹Ø´Ø±ÙØ©Ø ÙØ§ÙØ«ÙØ§Ø¦ÙØ© ÙØ§Ùث٠اÙÙØ©
ØªÙØ³ØªØ®Ø¯ÙÙ
Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ø§ÙØ³Øª Ø¹Ø´Ø±ÙØ© Ø¨ÙØ«Ø±Ø© ÙÙ JavaScript ÙØªÙ
Ø«ÙÙ Ø§ÙØ£ÙÙØ§ÙØ ÙØªØ´ÙÙØ± Ø§ÙØ£ØØ±Ù ÙÙØ£Ø´Ùاء Ø£Ø®Ø±Ù Ø¹Ø¯ÙØ¯Ø©. ÙØ°Ø§ ÙØ¥Ù ÙÙØ§Ù طرÙÙØ© Ø£ÙØµØ± ÙÙØªØ§Ø¨ØªÙا ÙØ°ÙÙ Ø¨ÙØ¶Ø¹ Ø§ÙØ³Ø§Ø¨ÙØ© 0x Ø«Ù
Ø§ÙØ±ÙÙ
. Ù
Ø«ÙÙØ§:
alert( 0xff ); // 255
alert( 0xFF ); // 255 (Ø§ÙØ¹Ø¯Ø¯ ذاتÙ, ÙØ§ ÙÙØ¬Ø¯ Ø§Ø®ØªÙØ§Ù Ø¨Ø§Ø®ØªÙØ§Ù ØØ§ÙØ© Ø§ÙØ£ØØ±Ù)
تستخدÙ
Ø§ÙØ£ÙظÙ
Ø© Ø§ÙØ«ÙØ§Ø¦ÙØ© ÙØ§ÙØ«Ù
اÙÙØ© ÙØ§Ø¯Ø±ÙØ§Ø ÙÙÙÙØ§ Ù
دعÙÙ
Ø© Ø£ÙØ¶Ùا باستخداÙ
Ø§ÙØ³Ø§Ø¨ÙØ© 0b ÙØ§ÙØ³Ø§Ø¨ÙØ© 0o عÙÙ Ø§ÙØªÙاÙÙ:
let a = 0b11111111; // اÙÙÙØ¦Ø© Ø§ÙØ«ÙØ§Ø¦ÙØ© ÙÙÙØ¹Ø¯Ø¯ 255
let b = 0o377; // اÙÙÙØ¦Ø© Ø§ÙØ«Ù
اÙÙØ© ÙÙÙØ¹Ø¯Ø¯ 255
alert( a == b ); // صØÙØØ Ø§ÙØ¹Ø¯Ø¯ ذات٠255 ÙÙ ÙÙØ§ Ø§ÙØ¬Ø§ÙبÙÙ
ÙÙØ¬Ø¯ Ø«ÙØ§Ø«Ø© Ø£ÙØ¸Ù
Ø© Ø¹Ø¯Ø¯ÙØ© ÙÙØ· Ù
دعÙÙ
Ø© Ø¨Ø§ÙØ´ÙÙ Ø§ÙØ³Ø§Ø¨Ù. ÙØ¬Ø¨ استخداÙ
Ø§ÙØ¯Ø§ÙØ© parseInt ÙØ¨Ø§ÙÙ Ø§ÙØ£ÙÙØ§Ø¹ (Ø³ÙØ´Ø±ØÙا ÙØ§ØÙÙØ§ ÙÙ ÙØ°Ø§ اÙÙØµÙ).
toString(base)â
ÙÙØ±Ø¬Ùع Ø§ÙØªØ§Ø¨Ø¹ num.toString(base)â ØªÙ
Ø«ÙÙÙØ§ ÙØµÙÙØ§ ÙÙÙ
ØªØºÙØ± num Ø¥Ù٠اÙÙØ¸Ø§Ù
Ø§ÙØ¹Ø¯Ø¯Ù اÙÙ
ÙØ¹Ø·Ù base. Ù
Ø«ÙÙØ§:
let num = 255;
alert( num.toString(16) ); // ff
alert( num.toString(2) ); // 11111111
ÙÙ
Ù٠أ٠تختÙÙ ÙÙÙ
Ø© base Ù
Ù 2 ØØªÙ 36Ø ÙØ§ÙÙÙÙ
Ø© Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ© ÙÙ 10.
ØØ§Ùات Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù Ø§ÙØ´Ø§Ø¦Ø¹Ø©:
base=16: تستخد٠ÙÙØ£ÙÙØ§Ù Ø§ÙØ³Øª Ø¹Ø´Ø±ÙØ©Ø ÙØªØ´ÙÙØ± Ø§ÙØ£ØØ±ÙÙ ÙØºÙØ±ÙØ§Ø ÙØ¯ تØÙÙ Ø§ÙØ®Ø§Ùات Ø§ÙØ£Ø±ÙاÙ0..9Ø£Ù Ø§ÙØ£ØØ±ÙA..F.base=2: ÙØ³ØªØ®Ø¯Ù Ø¨ÙØ«Ø±Ø© Ù٠تصØÙØ Ø§ÙØ¹Ù ÙÙØ§Øª Ø§ÙØ¯ÙÙÙØ©Ø ÙÙ ÙÙ Ø£Ù ÙØÙÙ Ø§ÙØ±ÙÙ ÙÙ0Ø£Ù1.base=36: ÙÙ Ø§ÙØØ¯ Ø§ÙØ£Ø¹ÙÙØ ÙÙ ÙÙ Ø£Ù ÙØÙÙ Ø§ÙØ£Ø±ÙاÙ0..9Ø£Ù Ø§ÙØ£ØØ±ÙÙA..Z. ÙÙ ÙÙ Ø§Ø³ØªØ®Ø¯Ø§Ù Ø¬Ù ÙØ¹ Ø§ÙØ£ØØ±Ù اÙÙØ§ØªÙÙÙØ© ÙØªÙ Ø«Ù٠عدد. ÙØ¯ ÙØ¨Ø¯Ù Ø£Ù Ø±ÙØ§ Ù Ù ØªØ¹ÙØ§ ÙÙÙ ÙÙÙÙ Ù ÙÙØ¯Ùا ÙÙ ØØ§Ù Ø§ØØªØ¬Ùا ÙØªØÙÙ٠٠عر٠عدد٠طÙÙ٠إÙ٠عدد Ø£ÙØµØ±Ø Ù Ø«ÙÙØ§Ø ÙØªÙØµÙØ± رابط url. ÙÙ Ù٠ت٠ثÙÙ٠باÙÙØ¸Ø§Ù Ø§ÙØ¹Ø¯Ø¯Ù Ø°Ù Ø§ÙØ£Ø³Ø§Ø³36:
alert( 123456..toString(36) ); // 2n9c
Rounding
One of the most used operations when working with numbers is rounding.
There are several built-in functions for rounding:
Math.floor- Rounds down:
3.1becomes3, and-1.1becomes-2. Math.ceil- Rounds up:
3.1becomes4, and-1.1becomes-1. Math.round- Rounds to the nearest integer:
3.1becomes3,3.6becomes4, the middle case:3.5rounds up to4too. Math.trunc(not supported by Internet Explorer)- Removes anything after the decimal point without rounding:
3.1becomes3,-1.1becomes-1.
Hereâs the table to summarize the differences between them:
Math.floor |
Math.ceil |
Math.round |
Math.trunc |
|
|---|---|---|---|---|
3.1 |
3 |
4 |
3 |
3 |
3.6 |
3 |
4 |
4 |
3 |
-1.1 |
-2 |
-1 |
-1 |
-1 |
-1.6 |
-2 |
-1 |
-2 |
-1 |
These functions cover all of the possible ways to deal with the decimal part of a number. But what if weâd like to round the number to n-th digit after the decimal?
For instance, we have 1.2345 and want to round it to 2 digits, getting only 1.23.
Ø¥Ù ÙØ¶Ø¹Ùا ÙÙØ·Ø© ÙØ§ØØ¯Ø© ÙÙØ· â123456.toString(36)â ÙØ³ÙÙÙÙ ÙÙØ§Ù Ø®Ø·Ø£Ø ÙØ£Ù JavaScript Ø³ÙØªØ¹ØªØ¨Ø± أ٠اÙÙÙØ·Ø© ÙÙ ÙØ§ØµÙØ© Ø¹Ø´Ø±ÙØ© ÙØ£Ù Ù
ا Ø¨Ø¹Ø¯ÙØ§ Ù٠جزء عشر٠ÙÙØ¹Ø¯Ø¯. ÙØ¥Ø°Ø§ ÙØ¶Ø¹Ùا ÙÙØ·Ø© Ø£Ø®Ø±Ù ÙØ³ØªØ¹Ø±Ù Ø£Ù Ø§ÙØ¬Ø²Ø¡ Ø§ÙØ¹Ø´Ø±Ù ÙØ§Ø±Øº ÙØªÙتÙ٠إÙÙ Ø§ÙØ¯Ø§ÙØ©.
ÙÙ
ÙÙ ÙØªØ§Ø¨ØªÙا Ø¨ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ© Ø£ÙØ¶Ùا â(123456).toString(36)â.
## Ø§ÙØªÙØ±ÙØ¨ (Rounding)
Ø£ØØ¯ Ø§ÙØ®ØµØ§Ø¦Øµ Ø§ÙØ£Ùثر استخداÙ
ÙØ§ Ø¹ÙØ¯ Ø§ÙØªØ¹Ø§Ù
Ù Ù
ع Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ ÙÙ Ø§ÙØªÙØ±ÙØ¨. ÙÙØ¬Ø¯ Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ¯Ùا٠اÙÙ
دÙ
جة ÙÙØªÙØ±ÙØ¨:
alert( Math.round(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23
```
ÙØ®ØªØµØ± Ø§ÙØ¬Ø¯ÙÙ ÙÙ Ø§ÙØ£Ø³ÙÙ Ø§ÙØ§Ø®ØªÙØ§ÙØ§Øª بÙÙ ÙØ°Ù Ø§ÙØªÙابع:
| | `Math.floor` | `Math.ceil` | `Math.round` | `Math.trunc` |
| ---- | ---------- | --------- | ---------- | ---------- |
| 3.1 | 3 | 4 | 3 | 3 |
| 3.6 | 3 | 4 | 4 | 3 |
| -1.1 | -2 | -1 | -1 | -1 |
| -1.6 | -2 | -1 | -2 | -1 |
ØªÙØ¹ÙØ·ÙÙÙ ÙØ°Ù Ø§ÙØªÙابع جÙ
ÙØ¹ Ø§ÙØ§ØØªÙ
Ø§ÙØ§Øª اÙÙ
Ù
ÙÙØ© ÙÙØªØ¹Ø§Ù
Ù Ù
ع Ø§ÙØ¬Ø²Ø¡ Ø§ÙØ¹Ø´Ø±Ù ÙÙØ¹Ø¯Ø¯Ø ÙÙÙ Ù
اذا Ø¥Ù ÙÙØ§ ÙØ±Ùد ØªÙØ±Ùب Ø§ÙØ¹Ø¯Ø¯ Ø¥ÙÙ Ø®Ø§ÙØ© Ù
ØØ¯ÙÙØ¯Ø© بعد اÙÙØ§ØµÙØ© Ø§ÙØ¹Ø´Ø±ÙØ©Ø
Ù
Ø«ÙÙØ§Ø ÙØ¯ÙÙØ§ Ø§ÙØ¹Ø¯Ø¯ `1.2345` ÙÙØ±Ùد ØªÙØ±Ùب Ø¥ÙÙ Ø®Ø§ÙØªÙÙ ÙÙØØµÙ Ø¹ÙÙ `1.23` ÙÙØ·. ÙÙØ¬Ø¯ طرÙÙØªÙÙ ÙÙÙÙØ§Ù
بذÙÙ:
1- Ø§ÙØ¶Ø±Ø¨ ÙØ§ÙÙØ³Ù
Ø©:
Ù
Ø«ÙÙØ§Ø ÙØªÙØ±ÙØ¨ Ø§ÙØ±ÙÙ
Ø¥ÙÙ Ø§ÙØ®Ø§ÙØ© Ø§ÙØ«Ø§ÙÙØ© بعد اÙÙØ§ØµÙØ© Ø§ÙØ¹Ø´Ø±ÙØ©Ø ÙÙ
ÙÙÙØ§ ضرب Ø§ÙØ¹Ø¯Ø¯ ÙÙ `100`Ø Ø«Ù
ÙØ³ØªØ¯Ø¹Ù تابع Ø§ÙØªÙØ±ÙØ¨ Ø«Ù
ÙÙØ³Ù
عÙÙ ÙÙØ³ Ø§ÙØ¹Ø¯Ø¯.
let num = 1.23456;
alert( Math.floor(num * 100) / 100 ); // 1.23456 â 123.456 â 123 â 1.23
2- ÙÙØ±Ø¨ Ø§ÙØªØ§Ø¨Ø¹ [`toFixed(n)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) Ø§ÙØ¹Ø¯Ø¯ اÙÙ
ستدع٠Ù
ع٠إÙÙ Ø§ÙØ®Ø§ÙØ© `n` بعد اÙÙØ§ØµÙØ© Ø§ÙØ¹Ø´Ø±ÙØ© ÙÙÙØ±Ø¬Ùع تÙ
Ø«ÙÙÙØ§ ÙØµÙÙØ§ ÙÙÙØªÙجة.
let num = 12.34; alert( num.toFixed(1) ); // â12.3â
ÙØ¹Ù
Ù Ø§ÙØªØ§Ø¨Ø¹ عÙÙ ØªÙØ±Ùب Ø§ÙØ¹Ø¯Ø¯ ÙÙØ£Ùبر Ø£Ù Ø§ÙØ£ØµØºØ± ÙÙÙÙØ§ Ø¥ÙÙ Ø£ÙØ±Ø¨ ÙÙÙ
Ø©Ø Ù
Ø«Ù Ø§ÙØªØ§Ø¨Ø¹ `Math.round`:
let num = 12.36; alert( num.toFixed(1) ); // â12.4â
ÙØ§ØØ¸ Ø£Ù Ù
خرجات Ø§ÙØªØ§Ø¨Ø¹ `toFixed` ÙÙ ÙØµ. Ø¥Ù ÙØ§Ù Ø§ÙØ¬Ø²Ø¡ Ø§ÙØ¹Ø´Ø±Ù Ø£ÙÙ Ù
٠اÙÙ
Ø·ÙÙØ¨Ø ØªÙØ¶Ø§Ù Ø§ÙØ£ØµÙار Ø¥ÙÙ ÙÙØ§ÙØ© Ø§ÙØ±ÙÙ
:
let num = 12.34; alert( num.toFixed(5) ); // â12.34000â, Ø£ØµÙØ§Ø± Ù Ø¶Ø§ÙØ© ÙØ¬Ø¹Ù عدد Ø§ÙØ®Ø§Ùات 5
ÙÙ
ÙÙÙØ§ تØÙÙ٠اÙÙ
خرجات Ø¥Ù٠عدد باستخداÙ
Ø§ÙØ¬Ù
ع Ø§ÙØ£ØØ§Ø¯Ù أ٠باستدعاء Ø§ÙØ¯Ø§ÙØ© `Number()`: `+num.toFixed(5)â `.
## ØØ³Ø§Ø¨Ø§Øª ØºÙØ± دÙÙÙØ©
ÙÙÙ
ÙØ«ÙÙÙ Ø§ÙØ¹Ø¯Ø¯ داخÙÙÙØ§ Ø¨ØµÙØºØ© 64-Ø¨ÙØª [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision)Ø ÙØ°Ø§ ÙÙØ¬Ø¯ 64 Ø¨ÙØª ÙØªØ®Ø²ÙÙ Ø§ÙØ¹Ø¯Ø¯: تستخدÙ
52 Ù
ÙÙØ§ ÙØªØ®Ø²ÙÙ Ø£Ø±ÙØ§Ù
Ø§ÙØ¹Ø¯Ø¯Ø Ù 11 Ù
ÙÙØ§ ÙØªØ®Ø²ÙÙ Ù
ÙØ§Ù اÙÙØ§ØµÙØ© Ø§ÙØ¹Ø´Ø±ÙØ© (تÙÙÙ Ø£ØµÙØ§Ø±Ùا ÙÙØ§Ø¹Ø¯Ø§Ø¯ Ø§ÙØµØÙØØ©)Ø Ù 1 Ø¨ÙØª ÙØ¥Ø´Ø§Ø±Ø© Ø§ÙØ¹Ø¯Ø¯.
Ø¥Ù ÙØ§Ù Ø§ÙØ¹Ø¯Ø¯ ÙØ¨ÙØ±ÙØ§ Ø¬Ø¯ÙØ§Ø ÙÙØ³Ùزداد ع٠Ù
Ø³Ø§ØØ© Ø§ÙØªØ®Ø²ÙÙ 64-Ø¨ÙØªØ Ù
عطÙÙØ§ Ù
ا ÙØ§ ÙÙØ§ÙØ©:
alert( 1e500 ); // ٠ا ÙØ§ ÙÙØ§ÙØ©
Ù
ا ÙØ¯ ÙÙÙ٠أÙÙ ÙØ¶ÙØÙØ§Ø ÙÙØØ¯Ø« ØºØ§ÙØ¨Ùا ÙÙ Ø¶ÙØ§Ø¹ اÙÙØ§ØµÙØ©. ÙØ§ØØ¸ Ø§ÙØ§Ø®ØªØ¨Ø§Ø± Ø§ÙØ®Ø·Ø£ Ø§ÙØªØ§ÙÙ:
alert( 0.1 + 0.2 == 0.3 ); // خطأ
Ø§ÙØ¬Ù
ÙØ© Ø§ÙØ³Ø§Ø¨ÙØ© ØªØØ¯Ø« ÙØ¹ÙÙÙØ§Ø Ø¥Ù ÙØØµÙØ§ Ù
ا Ø¥Ù ÙØ§Ù Ù
جÙ
ÙØ¹ `0.1` Ù `0.2` ÙÙ `0.3`Ø ÙØØµÙ Ø¹ÙÙ `false`. ØºØ±ÙØ¨ Ø£ÙÙØ³ ÙØ°ÙÙØ! Ù
ا اÙÙØªÙجة Ø¥Ø°ÙØ§ Ø¥Ù ÙÙ
تÙÙ `0.3`Ø
alert( 0.1 + 0.2 ); // 0.30000000000000004
ÙÙØ¬Ø¯ خطأ آخر ÙÙØ§ ØºÙØ± اÙÙ
ÙØ§Ø²ÙØ© Ø§ÙØ®Ø·Ø£. تخÙ٠أÙÙØ§ ÙÙÙÙ
بÙ
ÙÙØ¹ ÙÙØªØ³ÙÙ Ø§ÙØ§ÙÙØªØ±ÙÙÙØ ÙÙØ¶Ø¹ Ø§ÙØ²Ø§Ø¦Ø± بضائع بÙÙÙ
`$0.10` Ù `$0.20` ÙÙ Ø§ÙØ³ÙØ©. سÙÙÙÙ Ù
جÙ
ÙØ¹ Ø§ÙØ·Ùب `$0.30000000000000004`. Ù
Ù
ا ÙØ¯ ÙÙØ§Ø¬Ø¦ Ø£Ù Ø£ØØ¯.
ÙÙÙ Ø§ÙØ³Ø¤Ø§Ù Ø§ÙØ£ÙÙ
Ø ÙÙ
ÙØØ¯Ø« ÙØ°Ø§Ø
ÙÙØ®ÙزÙÙÙ Ø§ÙØ¹Ø¯Ø¯ ÙÙ Ø§ÙØ°Ø§Ùرة بÙÙØ¦ØªÙ Ø§ÙØ«ÙØ§Ø¦ÙØ©Ø Ø³ÙØ³ÙØ© Ù
Ù Ø§ÙØ¨Ùت - ÙØ§ØØ¯Ø§Øª ÙØ£ØµÙار. ÙÙÙ Ø§ÙØ£Ø¬Ø²Ø§Ø¡ Ù
ث٠`0.1` Ù `0.2` ÙØ§ÙØªÙ ØªØ¨Ø¯Ù Ø¨Ø³ÙØ·Ø© باÙÙØ³Ø¨Ø© ÙÙÙØ¸Ø§Ù
Ø§ÙØ¹Ø¯Ø¯Ù Ø§ÙØ¹Ø´Ø±Ù ÙÙ ÙÙ Ø§ÙØÙÙÙØ© أجزاء ØºÙØ± Ù
ÙØªÙÙØ© Ù٠اÙÙØ¸Ø§Ù
Ø§ÙØ«ÙائÙ.
بÙ
عÙÙ Ø¢Ø®Ø±Ø Ù
ا ÙÙ `0.1`Ø ÙÙ ÙØ§ØØ¯ Ù
ÙØ³ÙÙ
عÙ٠عشرة `1/10`Ø Ø¹ÙØ´Ø±. ÙÙÙÙÙ Ù
Ù Ø§ÙØ³Ù٠تÙ
Ø«ÙÙØ© Ø¨ÙØ¸Ø§Ù
Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ø§ÙØ¹Ø´Ø±Ù. Ù
ÙØ§Ø²ÙØ© Ø¨Ø§ÙØ«ÙØ«: `1/3`. Ø§ÙØ°Ù ÙØµØ¨Ø Ø¨ÙØ³Ùر ØºÙØ± Ù
ÙØªÙÙØ© `â0.33333(3)â`.
ÙØ°Ø§Ø ÙØ¥Ù Ù
٠اÙÙ
Ø¤ÙØ¯ أ٠تعÙ
Ù Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ اÙÙ
ÙØ³ÙÙ
Ø© عÙÙ Ù
Ø¶Ø§Ø¹ÙØ§Øª Ø§ÙØ¹Ø¯Ø¯ `10` Ù٠اÙÙØ¸Ø§Ù
Ø§ÙØ¹Ø´Ø±ÙØ ÙÙØ§ تعÙ
٠اÙÙ
ÙØ³ÙÙ
Ø© عÙÙ `3`. ÙÙØ°ÙÙ Ø£ÙØ¶Ùا Ù٠اÙÙØ¸Ø§Ù
Ø§ÙØ«ÙØ§Ø¦ÙØ تعÙ
Ù Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ اÙÙ
ÙØ³ÙÙ
Ø© عÙÙ Ù
Ø¶Ø§Ø¹ÙØ§Øª Ø§ÙØ¹Ø¯Ø¯ `2`Ø ÙÙÙ ÙØµØ¨Ø Ø§ÙØ¹Ø¯Ø¯ `1/10` ÙØ³ÙØ±ÙØ§ Ø«ÙØ§Ø¦ÙØ© ØºÙØ± Ù
ÙØªÙÙØ©.
ÙØ§ ÙÙØ¬Ø¯ طرÙÙØ© ÙØªØ®Ø²ÙÙ Ø§ÙØ¹Ø¯Ø¯ ذات٠0.1 Ø£Ù 0.2 Ø¨Ø§ÙØ¶Ø¨Ø· باستخداÙ
اÙÙØ¸Ø§Ù
Ø§ÙØ«ÙØ§Ø¦ÙØ ÙÙ
ا ÙØ§ ÙÙ
Ù٠تخزÙÙ Ø§ÙØ«ÙØ« ÙØ¬Ø²Ø¡ عشرÙ.
ÙØÙ ÙÙ
Ø· Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ IEEE-754 ÙØ°Ù اÙÙ
Ø´ÙÙØ© Ø¨ØªÙØ±Ùب Ø§ÙØ¹Ø¯Ø¯ Ø¥ÙÙ Ø£ÙØ±Ø¨ عدد Ù
Ù
ÙÙ. ÙØ§ ØªØªÙØ ÙÙØ§ ÙÙØ§Ø¹Ø¯ Ø§ÙØªÙØ±ÙØ¨ ÙØ°Ù Ø±Ø¤ÙØ© خسارة Ø§ÙØ£Ø¬Ø²Ø§Ø¡ Ø§ÙØµØºÙØ±Ø©Ø ÙÙÙÙØ§ تÙÙÙ Ù
ÙØ¬Ùدة. ÙÙ
ÙÙÙØ§ Ø±Ø¤ÙØ© ذÙÙ ÙØ¹ÙÙÙØ§:
alert( 0.1.toFixed(20) ); // 0.10000000000000000555
ÙØ¹Ùد جÙ
ع عددÙÙØ ÙØ¥Ù Ø§ÙØ£Ø¬Ø²Ø§Ø¡ اÙÙ
ÙÙÙØ¯Ø© ØªØ¸ÙØ±.
ÙØ°Ø§ ÙÙØ³Ø± ÙÙÙ
Ù `0.1 + 0.2` ÙØ§ تساÙÙ `0.3` Ø¨Ø§ÙØ¶Ø¨Ø·.
```smart header="Not only JavaScript"
ÙØ°Ù اÙÙ
Ø´ÙÙØ© Ù
ÙØ¬Ùدة ÙÙ Ø§ÙØ¹Ø¯Ùد Ù
٠اÙÙØºØ§Øª Ø§ÙØ¨Ø±Ù
Ø¬ÙØ© Ø§ÙØ£Ø®Ø±Ù Ù
ث٠PHPØ Ù JavaØ Ù CØ Ù PerlØ Ù Ruby ØªÙØ¹Ø·Ù اÙÙØªÙجة Ø°Ø§ØªÙØ§Ø ÙØ£ÙÙØ§ تعتÙ
د عÙÙ Ø§ÙØµÙغة Ø§ÙØ¹Ø¯Ø¯ÙØ© Ø°Ø§ØªÙØ§.
ÙÙ ÙÙ ÙÙÙØ§ ØªØ¬ÙØ¨ اÙÙ Ø´ÙÙØ©Ø Ø¨Ø§ÙØ·Ø¨Ø¹Ø Ø£ÙØ¶Ù طرÙÙØ© ÙÙ Ø¨ØªÙØ±Ùب اÙÙØªÙجة ب٠ساعدة Ø§ÙØªØ§Ø¨Ø¹toFixed(n):
let sum = 0.1 + 0.2;
alert(sum.toFixed(2)); // 0.30
ÙØ±Ø¬Ù Ù
ÙØ§ØØ¸Ø© Ø£Ù toFixed ØªÙØ±Ø¬Ùع ÙØµÙا دائÙ
ÙØ§. ÙØªØªØ£Ùد Ù
Ù ÙØ¬Ùد Ø®Ø§ÙØªÙÙ ÙÙØ· بعد Ø§ÙØ¹ÙاÙ
Ø© Ø§ÙØ¹Ø´Ø±ÙØ©. ÙØ°Ø§ ÙØ¬Ø¹Ù Ø§ÙØ£Ù
ر Ù
Ø±ÙØÙØ§ Ø¥Ù ÙØ§Ù ÙØ¯ÙÙØ§ Ù
ÙÙØ¹ تسÙ٠إÙÙØªØ±ÙÙÙ ÙØ£Ø±Ø¯Ùا عرض $0.30. ÙÙ
ÙÙÙØ§ استخداÙ
Ø§ÙØ¬Ù
ع Ø§ÙØ£ØØ§Ø¯Ù ÙÙ Ø§ÙØØ§ÙØ§Øª Ø§ÙØ£Ø®Ø±Ù ÙØªØÙÙÙ٠إÙ٠عدد:
let sum = 0.1 + 0.2;
alert(+sum.toFixed(2)); // 0.3
ÙÙ ÙÙÙØ§ Ø£ÙØ¶Ø§ ضرب Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ù Ø¤ÙØªÙا ÙÙ 100 أ٠أ٠عدد Ø£ÙØ¨Ø± ÙØªØÙÙ٠إÙ٠أعداد صØÙØØ© ث٠إعادة ÙØ³Ù ØªÙØ§ عÙÙ Ø§ÙØ¹Ø¯Ø¯ اÙÙ Ø¶Ø±ÙØ¨ ÙÙÙ. ÙÙØ°Ø§ ÙØ¯ ØªØ±ØªÙØ¹ ÙØ³Ø¨Ø© Ø§ÙØ®Ø·Ø£ Ù٠ا ÙÙ ÙÙØ§ ÙØªØ¹Ø§Ù ٠٠ع أعداد صØÙØØ© ÙÙÙÙØ§ Ø³ÙØªØ®Ùص Ù ÙÙØ§ باÙÙØ³Ù Ø©:
alert((0.1 * 10 + 0.2 * 10) / 10); // 0.3
alert((0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001
ÙØ°Ø§Ø ÙÙÙÙ ÙÙØ¬ Ø§ÙØ¶Ø±Ø¨ ÙØ§ÙÙØ³Ù Ø© Ø§ÙØ®Ø·Ø£ ÙÙÙÙ ÙØ§ ÙØ²ÙÙØ© ÙÙÙÙØ§.
ÙØ¯ ÙØØ§ÙÙ ØªØ¬ÙØ¨ Ø§ÙØ£Ø¬Ø²Ø§Ø¡ ÙÙÙÙØ§ Ù٠بعض Ø§ÙØ£ØÙاÙ. Ù٠ا ÙÙ ÙÙØ§ ÙØªØ¹Ø§Ù ٠٠ع ٠تجر Ø¥ÙÙØªØ±ÙÙÙØ ØØªÙ ÙØªÙ Ù٠٠٠تخزÙÙ Ø§ÙØ£Ø³Ø¹Ø§Ø± Ø¨Ø§ÙØ³Ùت بدÙÙØ§ Ù Ù Ø§ÙØ¯ÙÙØ§Ø±. ÙÙ٠٠اذا Ø¥Ù ÙØ¶Ø¹Ùا تخÙÙØ¶Ùا ب 30%Ø ÙÙÙÙ Ø£ÙØ«Ø± Ø¯ÙØ©Ø ÙÙÙÙ ØªØ¬ÙØ¨ Ø§ÙØ£Ø¬Ø²Ø§Ø¡ ÙÙÙÙØ§ ÙØ§Ø¯Ø±Ùا Ø¬Ø¯ÙØ§. ÙÙ Ø¨ØªÙØ±ÙØ¨ÙØ§ ÙÙØ· ÙØªØªØ®Ùص Ù Ù Ø§ÙØ£Ø¬Ø²Ø§Ø¡ Ø§ÙØºÙر اÙÙ Ø±ØºÙØ¨Ø© Ø¹ÙØ¯ Ø§ÙØØ§Ø¬Ø©.
جرب تشغÙ٠٠ا ÙÙÙ:
// Ù
Ø±ØØ¨Ùا! Ø£ÙØ§ عدد ÙØ²Ø¯Ø§Ø¯ Ù
٠تÙÙØ§Ø¡ ÙÙØ³Ù!
alert( 9999999999999999 ); // ÙØ¸Ùر 10000000000000000
ÙØ°Ù Ø§ÙØØ§ÙØ© تعاÙ٠٠٠اÙÙ Ø´ÙÙØ© Ø°Ø§ØªÙØ§: Ø¶ÙØ§Ø¹ Ø§ÙØ¯ÙØ©. ÙÙØ¬Ø¯ 64 Ø¨ÙØª ÙÙØ¹Ø¯Ø¯Ø ÙÙ Ù٠استخدا٠52 Ù ÙÙØ§ ÙØªØ®Ø²ÙÙ Ø§ÙØ¹Ø¯Ø¯Ø ÙÙÙÙØ§ ØºÙØ± ÙØ§ÙÙØ©. ÙØ°Ø§ ÙØ¸Ùر Ø§ÙØ±ÙÙ Ø§ÙØ£Ø®Ùر.
ÙØ§ تعرض JavaScript خطأ ÙÙ Ù Ø«Ù ÙØ°Ù Ø§ÙØØ§ÙØ§Øª ÙÙ٠تÙÙÙ Ø¨Ø£ÙØ¶Ù ٠ا ÙØ¯ÙÙØ§ ÙÙ ÙØ§Ø¦Ù Ø© Ø§ÙØ¹Ø¯Ø¯ ÙÙØµÙغة اÙÙ Ø·ÙÙØ¨Ø©. ÙÙÙØ ÙØ³ÙØ¡ Ø§ÙØØ¸ ÙØ°Ù Ø§ÙØµÙغة ÙÙØ³Øª ÙØ¨Ùرة ÙÙØ§ÙØ©.
ÙØªÙجة Ø£Ø®Ø±Ù Ø³ÙØ¨ÙØ© ÙÙØªÙ
Ø«ÙÙ Ø§ÙØ¯Ø§Ø®ÙÙ ÙÙØ£Ø¹Ø¯Ø§Ø¯ ÙÙ ÙØ¬Ùد ØµÙØ±ÙÙ 0 Ù -0. ذÙÙ ÙØ£Ù Ø§ÙØ¥Ø¥Ø´Ø§Ø±Ø© تÙÙ
ÙØ«ÙÙÙ Ø¨Ø¨ÙØª Ù
ستÙÙØ ÙØ°Ø§ ÙÙÙ
ÙÙ ÙØ£Ù عدد Ø£Ù ÙÙÙÙ Ø³Ø§ÙØ¨Ùا Ø£Ù Ù
ÙØ¬Ø¨Ùا بÙ
ا Ù٠ذÙÙ Ø§ÙØµÙر.
ÙØ§ ÙÙÙÙ ÙØ°Ø§ اÙÙØ±Ù Ù ÙØÙØ¸Ùا ÙÙ Ø£ØºÙØ¨ Ø§ÙØØ§ÙØ§ØªØ ÙØ£Ù اÙ٠عا٠ÙÙØ§Øª Ù ÙØ¹ÙدÙÙØ© ÙØªØ¹Ø§Ù ÙÙ٠ا ÙØ¹Ø¯Ø¯ ÙØ§ØØ¯.
اÙÙØØµ: isFinite Ù isNaN
ÙÙ ØªØ°ÙØ± اÙÙÙÙ Ø§ÙØ¹Ø¯Ø¯ÙØ© Ø§ÙØ®Ø§ØµØ© Ø§ÙØªØ§ÙÙØ©Ø
Infinity(Ù-Infinity) ÙÙ ÙÙÙ Ø© Ø¹Ø¯Ø¯ÙØ© خاصة تÙÙÙ Ø£ÙØ¨Ø± أ٠أصغر Ù Ù Ø£Ù Ø´ÙØ¡.NaNتÙÙ ÙØ«ÙÙÙ ÙØ¬Ùد خطأ (ÙÙØ³ Ø¹Ø¯Ø¯ÙØ§ Not a Number).
ØªÙØªÙ
Ù ÙØ°Ù اÙÙÙÙ
Ø¥Ù٠اÙÙÙØ¹ numberØ ÙÙÙÙØ§ ÙÙØ³Øª Ø£Ø¹Ø¯Ø§Ø¯Ø ÙØ°Ø§ ÙÙØ¬Ø¯ ØªÙØ§Ø¨Ø¹ خاصة ÙÙØØµÙØ§:
isNaN(value)âÙÙØÙÙÙ٠اÙÙ ÙØ¹Ø§Ù ٠إÙ٠عدد ث٠ÙÙØØµ ٠ا Ø¥Ù ÙØ§ÙNaN:
alert( isNaN(NaN) ); // true
alert( isNaN("str") ); // true
ÙÙÙ ÙÙ ÙØØªØ§Ø¬ ÙÙØ°Ø§ Ø§ÙØªØ§Ø¨Ø¹Ø Ø£ÙÙØ³ Ù
٠اÙÙ
Ù
Ù٠استخداÙ
اÙÙ
ÙØ§Ø²ÙØ© ÙÙØ· === NaN? Ø§ÙØ¥Ø¬Ø§Ø¨Ø© ÙÙØ£Ø³Ù ÙÙ ÙØ§. اÙÙÙÙ
Ø© NaN ÙÙ ÙØ±Ùدة ÙÙØ§ ÙÙ
Ù٠أ٠تساÙÙ Ø£Ù Ø´ÙØ¡Ø ØØªÙ ÙÙØ³Ùا:
alert( NaN === NaN ); // false
isFinite(value)âÙÙØÙÙÙÙ Ù ÙØ¹Ø§Ù Ù٠إÙ٠عدد ÙÙÙØ±Ø¬Ùع اÙÙÙÙ Ø©trueØ¥Ù ÙØ§Ù Ø¹Ø¯Ø¯ÙØ§ عادÙÙØ§Ø Ø£Ù ÙØ§ ÙÙÙÙNaNØ£ÙInfinityØ£Ùâ-Infinity:
alert( isFinite("15") ); // true
alert( isFinite("str") ); // false, NaN
alert( isFinite(Infinity) ); // false, Infinity
تستخدÙ
isFinite Ø£ØÙاÙÙØ§ ÙÙØªØÙÙ Ù
ا Ø¥Ù ÙØ§Ù اÙÙØµ Ø¹Ø¯Ø¯ÙØ§ عادÙÙØ§:
let num = +prompt("Enter a number", '');
// Ø£Ù ÙÙÙ
Ø© ØºÙØ± Ø¹Ø¯Ø¯ÙØ© -Infinity Ø£Ù Infinity سÙÙÙ٠صØÙØÙا Ø¥ÙØ§ Ø¥Ù Ø£Ø¯Ø®ÙØª
alert( isFinite(num) );
ÙØ±Ø¬Ù Ù
ÙØ§ØØ¸Ø© أ٠اÙÙØ±Ø§Øº أ٠اÙÙ
Ø³Ø§ÙØ© اÙÙØ§ØØ¯Ø© ØªÙØ¹Ø§Ù
Ù Ù
عاÙ
ÙØ© Ø§ÙØµÙر 0 Ù٠جÙ
ÙØ¹ Ø§ÙØªÙابع Ø§ÙØ¹Ø¯Ø¯ÙØ© بÙ
ا ÙÙÙØ§ isFinite.
Object.isÙÙØ¬Ø¯ تابع خاص Ù
دÙ
ج Ù٠اÙÙØºØ© ÙØ¯Ø¹Ù Object.is ÙÙØ²Ø§Ù اÙÙÙÙ
ÙÙ
ا === ÙÙÙÙ Ø£ÙØ«Ø± Ù
ÙØ«ÙÙÙØ© ÙØ³Ø¨Ø¨ÙÙ:
- Ø£ÙÙ ÙØ¹Ù
Ù Ù
ع
NaN: Ø£ÙObject.is(NaN, NaN) === trueÙÙØ°Ø§ أ٠ر Ø¬ÙØ¯. - اÙÙÙÙ
تاÙ
0Ù-0٠ختÙÙØªØ§Ù:Object.is(0, -0) === falseØ Ø§ÙØ£Ù ر صØÙØ ØªÙÙÙÙØ§Ø ÙØ£Ù Ø§ÙØ¹Ø¯Ø¯ ÙØ¯Ù٠إشارة داخÙÙÙØ§ ٠٠ا ÙØ¬Ø¹Ù اÙÙÙ٠٠ختÙÙØ© ØØªÙ ÙÙ ÙØ§Ùت باÙÙ Ø§ÙØ®Ø§Ùات Ø£ØµÙØ§Ø±Ùا.
ÙÙÙÙ Ø§ÙØªØ§Ø¨Ø¹ Object.is(a, b)â ÙÙØ³ a === b Ù٠باÙÙ Ø§ÙØØ§ÙØ§Øª.
ØªÙØ³ØªØ®Ø¯Ù
طرÙÙØ© اÙÙ
ÙØ§Ø²ÙØ© ÙØ°Ù ØºØ§ÙØ¨Ùا ÙÙ ØªÙØµÙÙ JavaScript. Ø¹ÙØ¯Ù
ا ØªØØªØ§Ø¬ Ø®ÙØ§Ø±Ø²Ù
ÙØ© ÙÙ
ÙØ§Ø²ÙØ© ÙÙÙ ÙÙÙ
تÙÙ Ù
ØªØ·Ø§Ø¨ÙØªØ§Ù تÙ
اÙ
ÙØ§ ÙØ¥ÙÙØ§ تستخدÙ
Object.is (ØªÙØ³ÙÙ
ÙÙ٠داخÙÙÙØ§ اÙÙÙÙ
Ø© Ø°Ø§ØªÙØ§ âSameValueâ).
parseInt Ù parseFloat
Ø§ÙØªØÙÙÙ Ø§ÙØ¹Ø¯Ø¯Ù باستخداÙ
Ø§ÙØ¬Ù
ع + Ø£Ù Number()â ÙØ¹Ø¯ صارÙ
ÙØ§. Ø¥Ù ÙÙ
تÙ٠اÙÙÙÙ
Ø© Ø¹Ø¯Ø¯ÙØ§ ÙØ¥ÙÙØ§ ØªÙØ´Ù:
alert(+'100px'); // NaN
Ø§ÙØ§Ø³ØªØ«Ùاء اÙÙØÙØ¯ Ù٠اÙÙ Ø³Ø§ÙØ§Øª اÙÙØ§Ø±ØºØ© Ø¨Ø¨Ø¯Ø§ÙØ© Ø£Ù ÙÙØ§ÙØ© اÙÙØµØ إذ ÙØªÙ تجاÙÙÙØ§.
ÙÙÙØ ÙÙØ¬Ø¯ ÙØ¯ÙÙØ§ Ù٠اÙÙØ§Ùع ÙÙÙ
ÙØ§ باÙÙØØ¯Ø§ØªØ Ù
ث٠"100px" Ø£Ù "12pt" ÙÙ CSS. ÙÙ Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ¯ÙÙ Ø£ÙØ¶Ø§Ø ÙÙÙØÙ٠رÙ
ز Ø§ÙØ¹Ù
ÙØ© باÙÙÙÙ
Ø©Ø ÙÙ
Ø«ÙÙØ§Ø ÙØ¯ÙÙØ§ "19â¬" ÙÙØ±Ùد استخراج ÙÙÙ
Ø© Ø¹Ø¯Ø¯ÙØ© Ù
٠ذÙÙ. ÙØ°Ø§ Ù
ا ÙÙÙÙ
Ø¨Ù Ø§ÙØªØ§Ø¨Ø¹Ø§Ù parseInt Ù parseFloatØ Ø¥Ø° ÙÙØ±Ø¢Ù Ø§ÙØ¹Ø¯Ø¯ Ù
٠اÙÙØµ اÙÙ
Ø¹Ø·Ù ØØªÙ تعجزا٠عÙ٠ذÙÙ ÙØªØªÙÙÙ Ø§ÙØ¹Ù
ÙÙØ©. ÙÙ ØØ§Ù ÙØ¬Ùد Ø®Ø·Ø£Ø ÙØ¹ÙØ¯Ø§Ù Ø§ÙØ¹Ø¯Ø¯ اÙÙ
ÙØ¬ÙÙ
ÙÙØ¹. ÙÙØ¹Ùد Ø§ÙØªØ§Ø¨Ø¹ parseInt Ø¹Ø¯Ø¯ÙØ§ صØÙØÙØ§Ø Ø¨ÙÙÙ
ا ÙØ¹Ùد Ø§ÙØªØ§Ø¨Ø¹parseFloat Ø¹Ø¯Ø¯ÙØ§ عشرÙÙØ§:
alert(parseInt('100px')); // 100
alert(parseFloat('12.5em')); // 12.5
alert(parseInt('12.3')); // 12, ÙÙØ±Ø¬Ùع Ø§ÙØ¹Ø¯Ø¯ Ø§ÙØµØÙØ ÙÙØ·
alert(parseFloat('12.3.4')); // 12.3, تÙÙÙÙ٠اÙÙÙØ·Ø© Ø§ÙØ«Ø§ÙÙØ© عÙ
ÙÙØ© Ø§ÙØªØÙÙÙ
ÙÙØ¬Ø¯ بعض Ø§ÙØØ§ÙØ§Øª ÙØ±Ø¬Ø¹ ÙÙÙØ§ Ø§ÙØªØ§Ø¨Ø¹ parseInt Ø£Ù parseFloat اÙÙÙÙ
Ø© NaN ÙØ°ÙÙ Ø¹ÙØ¯Ù
ا ÙØ§ ÙÙØ¬Ø¯ أ٠رÙÙ
ÙØ¥Ø±Ø¬Ø§Ø¹Ù. ÙÙ٠اÙÙ
Ø«Ø§Ù Ø§ÙØªØ§ÙÙØ ÙÙÙÙ Ø§ÙØØ±Ù Ø§ÙØ£ÙÙ Ø§ÙØ¹Ù
ÙÙØ©:
alert(parseInt('a123')); // NaN, the first symbol stops the process
parseInt(str, radix)alert(parseInt('0xff', 16)); // 255
alert(parseInt('ff', 16)); // 255, ٠تعÙ
Ù Ø§ÙØ¶Ø§ بدÙÙ 0x
alert(parseInt('2n9c', 36)); // 123456
Ø¯ÙØ§Ù Ø±ÙØ§Ø¶ÙØ© أخرÙ
ØªØØªÙÙ JavaScript عÙ٠اÙÙØ§Ø¦Ù اÙÙ ÙØ¯Ù ÙØ¬ Math Ø§ÙØ°Ù ÙØØªÙ٠عÙÙ Ù ÙØªØ¨Ø© ØµØºÙØ±Ø© Ø¨Ø§ÙØ¯ÙØ§Ù ÙØ§ÙØ«ÙØ§Ø¨Øª Ø§ÙØ±ÙØ§Ø¶ÙØ©. Ø¥ÙÙ٠بعض Ø§ÙØ£Ù Ø«ÙØ©:
Math.random()-
Returns a random number from 0 to 1 (not including 1).
alert( Math.random() ); // 0.1234567894322 alert( Math.random() ); // 0.5435252343232 alert( Math.random() ); // ... (أ٠رÙÙ Ø¹Ø´ÙØ§Ø¦Ù) Math.max(a, b, c...)/Math.min(a, b, c...)-
ØªÙØ±Ø¬Ùع اÙÙÙÙ Ø© Ø§ÙØ£Ùبر Ø£Ù Ø§ÙØ£ØµØºØ± ٠٠اÙÙ ÙØ¹Ø§Ù ÙÙØ§Øª
alert( Math.max(3, 5, -10, 0, 1) ); // 5 alert( Math.min(1, 2) ); // 1 Math.pow(n, power)-
Returns
nraised to the given power.alert( Math.pow(2, 10) ); // 2 in power 10 = 1024
There are more functions and constants in Math object, including trigonometry, which you can find in the docs for the Math object.
Summary
To write numbers with many zeroes:
- Append
"e"with the zeroes count to the number. Like:123e6is the same as123with 6 zeroes123000000. - A negative number after
"e"causes the number to be divided by 1 with given zeroes. E.g.123e-6means0.000123(123millionths).
For different numeral systems:
- Can write numbers directly in hex (
0x), octal (0o) and binary (0b) systems. parseInt(str, base)parses the stringstrinto an integer in numeral system with givenbase,2 ⤠base ⤠36.num.toString(base)converts a number to a string in the numeral system with the givenbase.
اÙÙ ÙØ®Øµ
ÙÙØªØ§Ø¨Ø© أعداد ÙØ¨Ùرة:
- أضÙÙ
"e"٠ع عدد Ø§ÙØ£ØµÙار Ø§ÙØ®Ø§ØµØ© Ø¨Ø§ÙØ¹Ø¯Ø¯ اÙÙ Ø·ÙÙØ¨Ø Ù Ø«Ù:123e6ÙÙ123٠ع 6 Ø£ØµÙØ§Ø±. - ÙÙÙ
Ø© Ø³Ø§ÙØ¨Ø© بعد
"e"ØªÙØ³Ù Ø§ÙØ¹Ø¯Ø¯ عÙÙ 1 ٠ع عدد Ø§ÙØ£ØµÙار اÙÙ ÙØ¹Ø·Ù.
ÙÙØ£Ùظ٠ة Ø§ÙØ¹Ø¯ اÙ٠ختÙÙØ©:
- ÙÙ
ÙÙ ÙØªØ§Ø¨Ø© Ø§ÙØ£Ø¹Ø¯Ø§Ø¯ Ù
باشرة باÙÙØ¸Ø§Ù
Ø§ÙØ³ØªØ¹Ø´Ø±Ù (
0x)Ø Ø£Ù Ø§ÙØ«Ù٠اÙÙ (0o)Ø Ø£Ù Ø§ÙØ«ÙÙØ§Ø¦Ù (0b). parseInt(str, base)âØªØÙÙÙ٠اÙÙØµstrØ¥Ù٠عدد صØÙØ Ø¨Ø§ÙÙØ¸Ø§Ù Ø§ÙØ¹Ø¯Ø¯Ù اÙÙ ÙØ¹Ø·ÙbaseØ Ùâ2 ⤠base ⤠36.num.toString(base)âØªØÙÙÙÙ Ø§ÙØ¹Ø¯Ø¯ Ø¥ÙÙ ÙØµ باÙÙØ¸Ø§Ù Ø§ÙØ¹Ø¯Ø¯Ù اÙÙ ÙØ¹Ø·Ùbase.
ÙØªØÙÙ٠اÙÙÙÙ
Ù
ث٠12pt and 100px Ø¥Ù٠عدد:
- استخدÙ
parseIntØ£ÙparseFloatÙØªØÙÙÙ Ø³ÙØ³Ø ÙØ§ÙØªÙ ØªÙØ±Ø£ Ø§ÙØ¹Ø¯Ø¯ Ù Ù ÙØµ ÙØªÙØ±Ø¬ÙØ¹ اÙÙÙÙ Ø© Ø§ÙØªÙ استطاعت ÙØ±Ø§Ø¦ØªÙا ÙØ¨Ù ØØµÙ٠أ٠خطأ.
ÙÙØ£Ø¬Ø²Ø§Ø¡:
- Ø§ÙØªÙØ±ÙØ¨ باستخداÙ
Math.floorØ Ø£ÙMath.ceilØ Ø£ÙMath.truncØ Ø£ÙMath.roundØ£Ùnum.toFixed(precision)â. - ØªØ°ÙØ± ÙØ¬Ùد Ø¶ÙØ§Ø¹ ÙÙ Ø¯ÙØ© Ø§ÙØ¬Ø²Ø¡ Ø§ÙØ¹Ø´Ø±Ù Ø¹ÙØ¯ Ø§ÙØªØ¹Ø§Ù ٠٠ع اÙÙØ³Ùر.
ÙÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØ¯ÙØ§Ù Ø§ÙØ±ÙØ§Ø¶ÙØ©:
- Ø§Ø·ÙØ¹ عÙ٠اÙÙØ§Ø¦Ù Math Ø¹ÙØ¯Ù ا ØªØØªØ§Ø¬ ذÙÙØ ÙØ°Ù اÙÙ ÙØªØ¨Ø© ØµØºÙØ±Ø© Ø¬Ø¯ÙØ§Ø ÙÙÙÙØ§ ØªØºØ·Ù Ø§ÙØ§ØØªÙاجات Ø§ÙØ£Ø³Ø§Ø³ÙØ©.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)