모ë ìë°ì¤í¬ë¦½í¸ë ì«ì를 ëíë´ë ë ê°ì§ ìë£íì ì§ìí©ëë¤.
-
ì¼ë°ì ì¸ ì«ìë 'ë°°ì ë°ë ë¶ëììì ì«ì(double precision floating point number)'ë¡ ìë ¤ì§ 64ë¹í¸ íìì IEEE-754ì ì ì¥ë©ëë¤. íí ë¦¬ì¼ ì ì²´ìì ì´ íìì ì¬ì©íì¬ ì«ì를 ííí ìì ì ëë¤.
-
ììì 길ì´ë¥¼ ê°ì§ ì ìë BigInt ì«ìë¡ ëíë¼ ì ììµëë¤. ì¼ë°ì ì¸ ì«ìë
253ì´ìì´ê±°ë-253ì´íì¼ ì ìë¤ë ì ì½ ë문ì BigIntë¼ë ìë¡ì´ ìë£íì´ ë§ë¤ì´ì¡ìµëë¤. BigIntë ì주 í¹ë³í ê²½ì°ìë§ ì¬ì©ëë¯ë¡, ë³ëì ì±í° BigIntìì ìì¸í ë´ì©ì ë¤ë£¨ê² ìµëë¤.
ì, ê·¸ë¼ ì¼ë°ì ì¸ ì«ìì ëí´ì ìì¸í ììë´ ìë¤.
ì«ì를 ì ë ¥íë ë¤ìí ë°©ë²
10ìµì ì ë ¥í´ì¼ íë¤ê³ ììí´ ë´ ëë¤. ê°ì¥ ë¶ëª í ë°©ë²ì ìëì ê°ì´ ì§ì 10ìµ(one billion)ì ì¨ì£¼ë ê²ì ëë¤.
let billion = 1000000000;
ê·¸ë°ë° ì´ë ê² 0ì ë§ì´ ì¬ì©í´ ì«ì를 íííë¤ ë³´ë©´ ì못 ì
ë ¥í기 ì½ê¸° ë문ì, ì¤ì ë¡ë ì´ë° ë°©ë²ì ì ì¬ì©íì§ ììµëë¤. 0ì ë§ì´ ì
ë ¥íë ê² ê·ì°®ê¸°ë íì§ì. ê·¸ëì ëê°ë 10ìµ(billion)ì ëíë¼ ë '1bn'ì ì¬ì©íê³ , 73ìµì ëíë¼ ë '7.3bn'ì ì¬ì©í©ëë¤. í° ì«ì를 ëíë¼ ë ì´ë° ë°©ë²ì´ ì£¼ë¡ ì¬ì©ëì£ .
ìë°ì¤í¬ë¦½í¸ììë ì«ì ìì 'e'를 ë¶ì´ê³ 0ì ê°ì를 ê·¸ ìì ë¶ì¬ì£¼ë©´ ì«ì를 ì¤ì¼ ì ììµëë¤.
let billion = 1e9; // 10ìµ, 1ê³¼ 9ê°ì 0
alert( 7.3e9 ); // 73ìµ (7,300,000,000)
ì¦, 'e'ë e ì¼ìª½ì ìì e ì¤ë¥¸ìª½ì ìë ìë§í¼ì 10ì ê±°ëì ê³±ì ê³±íë í¨ê³¼ê° ììµëë¤.
1e3 === 1 * 1000
1.23e6 === 1.23 * 1000000
ì´ì ì주 ìì ì«ìì¸ 1ë§ì´í¬ë¡ì´(ë°±ë§ ë¶ì 1ì´)를 ííí´ë³´ê² ìµëë¤.
let ms = 0.000001;
ìì ì«ì를 ííí ëë í° ì«ì를 ííí ëì²ë¼ 'e'를 ì¬ì©í ì ììµëë¤. 0ì ëª
ìì ì¼ë¡ ì°ê³ ì¶ì§ ìë¤ë©´ ë¤ìê³¼ ê°ì´ ì«ì를 ííí ì ìì£ .
let ms = 1e-6; // 1ìì ì¼ìª½ì¼ë¡ 6ë² ììì ì´ë
0.000001ìì 0ì ê°ì를 ì¸ë©´ 6ì´ë¯ë¡ 0.000001ì ë¹ì°í 1e-6ì´ ëì£ .
ì´ë ê² 'e' ì°ì¸¡ì ììê° ìì¼ë©´, ì´ ììì ì ëê° ë§í¼ 10ì ê±°ëì ê³±í ìë¡ ëëë ê²ì ì미í©ëë¤.
// 10ì ì¸ ë² ê±°ëì ê³±í ìë¡ ëë
1e-3 === 1 / 1000 // 0.001
// 10ì ì¬ì¯ ë² ê±°ëì ê³±í ìë¡ ëë
1.23e-6 === 1.23 / 1000000 // 0.00000123
16ì§ì, 2ì§ì, 8ì§ì
16ì§ìë ìì ëíë´ê±°ë 문ì를 ì¸ì½ë©í ë ë± ë¤ìí ê³³ìì ë루 ì°ì
ëë¤. ë¤ìí ê³³ìì ì°ì´ë ë§í¼ ë¹ì°í 16ì§ì를 ì§§ê² íííë ë°©ë²ë ì¡´ì¬íê² ì£ . 16ì§ìë 0x를 ì¬ì©í´ ííí ì ììµëë¤.
ìì:
alert( 0xff ); // 255
alert( 0xFF ); // 255 (ë·ì문ì를 ê°ë¦¬ì§ ìì¼ë¯ë¡ ë ë¤ ê°ì ê°ì ëíë
ëë¤.)
2ì§ìì 8ì§ìë ì주 ëë¬¼ê² ì°ì´ê¸´ íì§ë§, ì ëì¬ 0bì 0o를 ì¬ì©í´ ê°ë¨í ëíë¼ ì ììµëë¤.
let a = 0b11111111; // 255ì 2ì§ì
let b = 0o377; // 255ì 8ì§ì
alert( a == b ); // true, ì§ë²ì ë¤ë¥´ì§ë§, aì bë ê°ì ìì
ìë°ì¤í¬ë¦½í¸ìì ì§ìíë ì§ë²ì 3ê°ì
ëë¤. ì´ ì¸ì ì§ë²ì ì¬ì©íë ¤ë©´ í¨ì parseInt를 ì¬ì©í´ì¼ í©ëë¤(ì±í° íë°ë¶ìì ë¤ë£¸).
toString(base)
num.toString(base) ë©ìëë baseì§ë²ì¼ë¡ numì ííí í, ì´ë¥¼ 문ìíì¼ë¡ ë³íí´ ë°íí©ëë¤.
ìì:
let num = 255;
alert( num.toString(16) ); // ff
alert( num.toString(2) ); // 11111111
baseë 2ìì 36ê¹ì§ ì¸ ì ìëë°, 기본ê°ì 10ì
ëë¤.
baseë³ ì ì¤ ì¼ì´ì¤ë ë¤ìê³¼ ê°ìµëë¤.
-
base=16 â 16ì§ì ì, 문ì ì¸ì½ë© ë±ì ííí ë ì¬ì©í©ëë¤. ì«ìë
0ë¶í°9, 10 ì´ìì ìëAë¶í°F를 ì¬ì©íì¬ ëíë ëë¤. -
base=2 â ë¹í¸ ì°ì° ëë²ê¹ ì ì£¼ë¡ ì°ì ëë¤. ì«ìë
0ëë1ì´ ë ì ììµëë¤. -
base=36 â ì¬ì©í ì ìë
baseì¤ ìµëê°ì¼ë¡,0..9ìA..Z를 ì¬ì©í´ ì«ì를 ííí©ëë¤. ìíë²³ ì ì²´ê° ì«ì를 ëíë´ë ë° ì¬ì©ëì£ .36ë² ì´ì¤ë urlì ì¤ì´ë ê²ê³¼ ê°ì´ ì«ìë¡ ë 긴 ìë³ì를 ì§§ê² ì¤ì¼ ë ì ì©í©ëë¤. ìì를 ì´í´ë´ ìë¤.alert( 123456..toString(36) ); // 2n9c
123456..toString(36)ì ìë ì ë ê°ë ì¤íê° ìëëë¤. ì ììì²ë¼ ì«ì를 ëìì¼ë¡ ë©ìë toStringì ì§ì í¸ì¶íê³ ì¶ë¤ë©´ ì«ì ë¤ìì ì ë ê° ..를 ë¶ì¬ì¼ í©ëë¤.
123456.toString(36)ì²ë¼ ì ì í ê°ë§ ì¬ì©íë©´, 첫 ë²ì§¸ ì ì´íë ììë¶ë¡ ì¸ìëì´ ìë¬ê° ë°ìí ì ììµëë¤. ì ì íë ë ì¶ê°íë©´ ìë°ì¤í¬ë¦½í¸ë ììë¶ê° ìë¤ê³ íë¨íê³ í¨ì를 í¸ì¶í©ëë¤.
(123456).toString(36)ë ê°ë¥í©ëë¤.
ì´ë¦¼ì 구í기
ì´ë¦¼ì를 구íë ê²(rounding)ì ì«ì를 ë¤ë£° ë ê°ì¥ ë§ì´ ì¬ì©ëë ì°ì° ì¤ íëì ëë¤.
ì´ë¦¼ì ê´ë ¨ ë´ì¥ í¨ì ëª ê°ì§ë¥¼ ì´í´ë´ ìë¤.
Math.floor- ììì 첫째 ì리ìì ë´ë¦¼(ë²ë¦¼).
3.1ì3,-1.1ì-2ê° ë©ëë¤. Math.ceil- ììì 첫째 ì리ìì ì¬ë¦¼.
3.1ì4,-1.1ì-1ì´ ë©ëë¤. Math.round- ììì 첫째 ì리ìì ë°ì¬ë¦¼.
3.1ì3,3.6ì4,-1.1ì-1ì´ ë©ëë¤. Math.trunc(Internet Explorerììë ì§ìíì§ ìì)- ììë¶ë¥¼ 무ì.
3.1ì3ì´ ëê³-1.1ì-1ì´ ë©ëë¤.
ê° ë´ì¥ í¨ìì ì°¨ì´ë¥¼ íë¡ ëíë´ë©´ ë¤ìê³¼ ê°ìµëë¤.
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 |
ììì ìê°í ë´ì¥ í¨ìë¤ë§ì¼ë¡ë ììë¶ì ê´ë ¨ë ì°ì° ëë¶ë¶ì ì²ë¦¬í ì ììµëë¤. ê·¸ë°ë° ììì n-thë²ì§¸ ì를 기ì¤ì¼ë¡ ì´ë¦¼ì를 구í´ì¼ íë ìí©ì´ë¼ë©´ ì´ë»ê² í´ì¼ í ê¹ì?
ì를 ë¤ì´ 1.2345ê° ìëë° ììì ë ë²ì§¸ ì릿ìê¹ì§ë§ ë¨ê²¨ 1.23ì ë§ë¤ê³ ì¶ì ê²½ì°ì²ë¼ ë§ì´ì£ .
ë ê°ì§ ë°©ë²ì´ ììµëë¤.
-
ê³±í기ì ëë기
ììì ë ë²ì§¸ ì리 ì«ìê¹ì§ë§ ë¨ê¸°ê³ ì¶ì ê²½ì°, ì«ìì
100ëë100ë³´ë¤ í°10ì ê±°ëì ê³± ì를 ê³±í í, ìíë ì´ë¦¼ì ë´ì¥ í¨ì를 í¸ì¶íê³ ì²ì ê³±í ì를 ë¤ì ëëë©´ ë©ëë¤.let num = 1.23456; alert( Math.floor(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23 -
ììì
në²ì§¸ ìê¹ì§ì ì´ë¦¼ì를 구í í ì´ë¥¼ 문ìíì¼ë¡ ë°íí´ì£¼ë ë©ìëì¸ toFixed(n)를 ì¬ì©í©ëë¤.let num = 12.34; alert( num.toFixed(1) ); // "12.3"toFixedëMath.roundì ì ì¬íê² ê°ì¥ ê°ê¹ì´ ê°ì¼ë¡ ì¬ë¦¼ í¹ì ë²ë¦¼í´ì¤ëë¤.let num = 12.36; alert( num.toFixed(1) ); // "12.4"toFixed를 ì¬ì©í ë 주ìí ì ì ì´ ë©ìëì ë°í ê°ì´ 문ìì´ì´ë¼ë ê²ì ëë¤. ììë¶ì 길ì´ê° ì¸ìë³´ë¤ ìì¼ë©´ ëì 0ì´ ì¶ê°ë©ëë¤.let num = 12.34; alert( num.toFixed(5) ); // "12.34000", ììë¶ì 길ì´ë¥¼ 5ë¡ ë§ë¤ê¸° ìí´ 0ì´ ì¶ê°ëììµëë¤.ì°¸ê³ ë¡,
+num.toFixed(5)ì²ë¼ ë¨í ë§ì ì°ì°ì를 ìì ë¶ì´ê±°ëNumber()를 í¸ì¶íë©´ 문ìíì ì«ì를 ì«ìíì¼ë¡ ë³íí ì ììµëë¤.
ë¶ì íí ê³ì°
ì«ìë ë´ë¶ì ì¼ë¡ 64ë¹í¸ íì IEEE-754ì¼ë¡ ííë기 ë문ì ì«ì를 ì ì¥íë ¤ë©´ ì íí 64ë¹í¸ê° íìí©ëë¤. 64ë¹í¸ ì¤ 52ë¹í¸ë ì«ì를 ì ì¥íë ë° ì¬ì©ëê³ , 11ë¹í¸ë ììì ìì¹ë¥¼(ì ìë 0), 1ë¹í¸ë ë¶í¸ë¥¼ ì ì¥íë ë° ì¬ì©ë©ëë¤.
ê·¸ë°ë° ì«ìê° ë무 커ì§ë©´ 64ë¹í¸ ê³µê°ì´ ëì³ì Infinityë¡ ì²ë¦¬ë©ëë¤.
alert( 1e500 ); // Infinity
ìì¸ì ì´í´íë ¤ë©´ ì§ì¤ì´ íìí긴 íì§ë§, 꽤 ì주 ë°ìíë íìì¸ ì ë°ë ìì¤(loss of precision)ë ììµëë¤.
ìì를 ì´í´ë´ ìë¤.
alert( 0.1 + 0.2 == 0.3 ); // false
0.1ê³¼ 0.2ì í©ì´ 0.3ê³¼ ì¼ì¹íëì§ íì¸ íëë° falseê° ì¶ë ¥ëììµëë¤.
ì´ìíë¤ì! í©ì ê²°ê³¼ê° 0.3ì´ ìëë¼ë©´ ëì²´ 무ìì¼ê¹ì?
alert( 0.1 + 0.2 ); // 0.30000000000000004
ë¶ì íí ë¹êµ ì°ì°ì´ ë§ë¤ì´ë´ë ê²°ê³¼ë ì¬ê¸°ì ê·¸ì¹ì§ ììµëë¤. ì¸í°ë· ì¼í몰 ì¬ì´í¸ë¥¼ ì´ìíê³ ìë¤ê³ ê°ì í´ ë´
ìë¤. ì¬ì©ìê° $0.10ì $0.20 ì§ë¦¬ 물íì ì¥ë°êµ¬ëì ë£ìë¤ê³ ììí´ ë³´ì£ . 주문 ì´ì¡ì´ $0.30000000000000004ì¸ ê²ì ë³´ê³ ëë¼ì§ ìì ì¬ì©ìë ìì ê²ëë¤.
ì ì´ë° ì¼ì´ ë°ìíë 걸ê¹ì?
ì«ìë 0ê³¼ 1ë¡ ì´ë£¨ì´ì§ ì´ì§ìë¡ ë³íëì´ ì°ìë ë©ëª¨ë¦¬ ê³µê°ì ì ì¥ë©ëë¤. ê·¸ë°ë° 10ì§ë²ì ì¬ì©íë©´ ì½ê² ííí ì ìë 0.1, 0.2 ê°ì ë¶ìë ì´ì§ë²ì¼ë¡ íííë©´ 무í ììê° ë©ëë¤.
0.1ì 1ì 10ì¼ë¡ ëë ìì¸ 1/10ì
ëë¤. 10ì§ë²ì ì¬ì©íë©´ ì´ë¬í ì«ì를 ì½ê² ííí ì ìì£ . 1/10ê³¼ 1/3ì ë¹êµí´ë´
ìë¤. 1/3ì 무í ìì 0.33333(3)ì´ ë©ëë¤.
ì´ë ê² 10ì ê±°ëì ê³±ì¼ë¡ ëë ê°ì 10ì§ë²ìì ì ëìíì§ë§ 3ì¼ë¡ ëëê² ëë©´ 10ì§ë²ìì ì ëë¡ ëìíì§ ììµëë¤. ê°ì ì´ì ë¡ 2ì§ë² ì²´ê³ìì 2ì ê±°ëì ê³±ì¼ë¡ ëë ê°ì ì ëìíì§ë§ 1/10ê°ì´ 2ì ê±°ëì ê³±ì´ ìë ê°ì¼ë¡ ëëê² ëë©´ 무í ììê° ëì´ë²ë¦½ëë¤.
10ì§ë²ìì 1/3ì ì íí ëíë¼ ì ìë¯ì´, 2ì§ë²ì ì¬ì©í´ 0.1 ëë 0.2를 ì ííê² ì ì¥íë ë°©ë²ì ììµëë¤.
IEEE-754ìì ê°ë¥í ê°ì¥ ê°ê¹ì´ ì«ìë¡ ë°ì¬ë¦¼íë ë°©ë²ì ì¬ì©í´ ì´ë° 문ì 를 í´ê²°í©ëë¤. ê·¸ë°ë° ë°ì¬ë¦¼ ê·ì¹ì ì ì©íë©´ ë°ìíë 'ìì ì ë°ë ìì¤âì ì°ë¦¬ê° ë³¼ ìë ìì§ë§ ì¤ì ë¡ ìì¤ì ë°ìí©ëë¤.
ìëì ê°ì´ ì½ë를 ìì±íë©´ ì ë°ë ìì¤ì ëì¼ë¡ íì¸í ì ìì£ .
alert( 0.1.toFixed(20) ); // 0.10000000000000000555
ê·¸ë¦¬ê³ ë ì«ì를 í©íë©´ 'ì ë°ë ìì¤âë ëí´ì§ëë¤.
0.1 + 0.2ê° ì íí 0.3ì´ ìë ì´ì ê° ì¬ê¸°ì ììµëë¤.
ë¤ë¥¸ ì¸ì´ììë ê°ì ì´ìê° ììµëë¤.
ìë°ì¤í¬ë¦½í¸ì ëì¼í ì«ì íìì ì¬ì©í기 ë문ì PHP, Java, C, Perl, Rubyììë ëê°ì 결과를 ì»ìµëë¤.
문ì 를 í´ê²°íë ë°©ë²ì ììê¹ì? ë¬¼ë¡ ììµëë¤. ê°ì¥ ì 뢰í ë§í ë°©ë²ì toFixed(n)ë©ìë를 ì¬ì©í´ ì´ë¦¼ì를 ë§ëë ê²ì ëë¤.
let sum = 0.1 + 0.2;
alert( sum.toFixed(2) ); // 0.30
ì´ë toFixedë íì 문ìì´ì ë°ííë¤ë ì ì ì ìí´ì¼ í©ëë¤. 문ìì´ì ë°íí기 ë문ì ììì ë¤ìì ì¤ë ì«ìê° íì 2ê°ê° ë ì ììµëë¤. ì¸í°ë· ì¼í몰ì êµ¬ì¶ ì¤ì´ê³ $0.30를 ë³´ì¬ì¤ì¼ í ë ì ì©íì£ . 문ìíì¼ë¡ ë°ë ì«ì를 ë¤ì ì«ìíì¼ë¡ ê°ì ë³ííë ¤ë©´ ë¨í ë§ì
ì°ì°ì를 ì¬ì©íë©´ ë©ëë¤.
let sum = 0.1 + 0.2;
alert( +sum.toFixed(2) ); // 0.3
ì«ìì ììë¡ 100(ëë ë í° ì«ì)ì ê³±íì¬ ì ìë¡ ë°ê¾¸ê³ , ìíë ì°ì°ì í í ë¤ì 100ì¼ë¡ ëëë ê²ë íëì ë°©ë²ì´ ë ì ììµëë¤. ì ì를 ëìì¼ë¡ íë ìí ì°ì°ì ìì를 ëìì¼ë¡ íë ì°ì°ë³´ë¤ ìë¬ê° ì 기 ë문ì ëë¤. ê·¸ë°ë° ì´ì¨ë ë§ì§ë§ì ëëì ì´ ë¤ì´ê°ê¸° ë문ì ììê° ë¤ì ë±ì¥í ì ìë¤ë ë¨ì ì´ ììµëë¤.
alert( (0.1 * 10 + 0.2 * 10) / 10 ); // 0.3
alert( (0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001
ì´ë ê² 10ì ê±°ëì ê³±ì ê³±íê³ ë¤ì ëì¼í ì«ìë¡ ëëë ì ëµì ì¤ë¥ë¥¼ ì¤ì¬ì£¼ê¸´ íì§ë§ ìì í ìì ì§ë 못í©ëë¤.
구íì íë¤ ë³´ë©´ 무í ììê° ëì¤ë ê²½ì°ë¥¼ ìì í ì°¨ë¨í´ì¼ íë ê²½ì°ê° ì기곤 í©ëë¤. ë¬ë¬ê° ìë ì¼í¸ ë¨ìë¡ ë¬¼í ê°ê²©ì ì ì¥íë ì¼í몰ì ë´ë¹íê³ ìëë°, íì¬ ë문ì ê°ê²©ì 30% í ì¸í´ì¼ íë ê²½ì°ê° ê·¸ë ì£ . 무íìì를 ë°©ì§íë ìë²½í ë°©ë²ì ì¬ì¤ ììµëë¤. íìí ëë§ë¤ '꼬리â를 ìë¼ ì´ë¦¼ì를 ë§ëë ë°©ë²ë¿ì´ì£ .
ìë ìì를 ì¤íí´ë³´ì¸ì.
// ì«ìê° ì¤ì¤ë¡ ì¦ê°íë¤ì!
alert( 9999999999999999 ); // 10000000000000000ì´ ì¶ë ¥ë©ëë¤.
문ì ì ìì¸ì ììë ì ë°ë ìì¤ ë문ì ëë¤. ì«ì를 ì ì¥í ë 64ë¹í¸ê° ì¬ì©ëëë°, ì´ ì¤ ì¤ì ì«ì를 ì ì¥íë ë° ì¬ì©ëë 52ë¹í¸ì ì ì«ì를 ì ì¥í기ì ê³µê°ì´ 모ìëëë¤. ë°ë¼ì ìµì ì í¨ ì«ì(the least significant digit)ê° ìì¤ëì´ ë²ë ¸ìµëë¤.
ìë°ì¤í¬ë¦½í¸ë ì«ì ìì¤ì´ ì¼ì´ëë ì¤ë¥ë¥¼ ë°ììí¤ì§ ììµëë¤. ì ì í í¬ë§·ì¼ë¡ ì«ì를 ë§ì¶ë ë° ìµì ì ë¤í긴 íì§ë§ ì ê°ì¤ë½ê²ë ì ììì ì«ì를 ë´ê¸°ì í¬ë§·ì´ ì¶©ë¶íì§ ìë¤ì.
ìë°ì¤í¬ë¦½í¸ ë´ë¶ìì ì«ì를 íííë ë°©ì ë문ì ë°ìíë ë ë¤ë¥¸ í¥ë¯¸ë¡ì´ íìì 0ê³¼ -0ì´ë¼ë ë ì¢
ë¥ì 0ì´ ì¡´ì¬íë¤ë ì¬ì¤ì
ëë¤.
ìë°ì¤í¬ë¦½í¸ìì ì«ìì ë¶í¸ê° ë¨ì¼ ë¹í¸ì ì ì¥ëëë° 0ì í¬í¨í 모ë ì«ìì ë¶í¸ë¥¼ ì¤ì í ìë, ì¤ì íì§ ìì ìë ì기 ë문ì ëë¤.
ëë¶ë¶ì ì°ì°ì 0ê³¼ -0ì ëì¼íê² ì·¨ê¸í기 ë문ì ë 0ì ì°¨ì´ë ëëë¬ì§ì§ ìë í¸ì
ëë¤.
isNaNê³¼ isFinite
ìë ë í¹ì ì«ì ê°ì´ 기ìµëìëì?
Infinityì-Infinityâ ê·¸ ì´ë¤ ì«ìë³´ë¤ í° í¹ì ìì í¹ì ì«ì ê°NaNâ ìë¬ë¥¼ ëíë´ë ê°
ë í¹ì ì«ìë ì«ìíì ìíì§ë§ âì ìì ì¸â ì«ìë ìë기 ë문ì, ì ìì ì¸ ì«ìì 구ë¶í기 ìí í¹ë³í í¨ìê° ì¡´ì¬í©ëë¤.
-
isNaN(value)â ì¸ì를 ì«ìë¡ ë³íí ë¤ìNaNì¸ì§ í ì¤í¸í¨alert( isNaN(NaN) ); // true alert( isNaN("str") ); // trueê·¸ë°ë° êµ³ì´ ì´ í¨ìê° íìí ê¹ì? "
=== NaNë¹êµë¥¼ íë©´ ëì§ ììê¹?"ë¼ë ìê°ì´ ë¤ ì ììµëë¤. ìíê¹ê²ë ëëµì 'íìíë¤âì ëë¤.NaNìNaNì기 ìì ì í¬í¨íì¬ ê·¸ ì´ë¤ ê°ê³¼ë ê°ì§ ìë¤ë ì ìì ë í¹í©ëë¤.alert( NaN === NaN ); // false -
isFinite(value)â ì¸ì를 ì«ìë¡ ë³ííê³ ë³íí ì«ìê°NaN/Infinity/-Infinityê° ìë ì¼ë° ì«ìì¸ ê²½ì°true를 ë°íí¨alert( isFinite("15") ); // true alert( isFinite("str") ); // false, NaNì´ê¸° ë문ì ëë¤. alert( isFinite(Infinity) ); // false, Infinityì´ê¸° ë문ì ëë¤.
isFiniteë 문ìì´ì´ ì¼ë° ì«ìì¸ì§ ê²ì¦íë ë° ì¬ì©ë곤 í©ëë¤.
let num = +prompt("ì«ì를 ì
ë ¥íì¸ì.", '');
// ì«ìê° ìë ê°ì ì
ë ¥íê±°ë Infinity, -Infinity를 ì
ë ¥íë©´ falseê° ì¶ë ¥ë©ëë¤.
alert( isFinite(num) );
ë¹ ë¬¸ìì´ì´ë ê³µë°±ë§ ìë 문ìì´ì isFinite를 í¬í¨í 모ë ì«ì ê´ë ¨ ë´ì¥ í¨ììì 0ì¼ë¡ ì·¨ê¸ëë¤ë ì ì ì ìíì기 ë°ëëë¤.
Object.isì ë¹êµí기Object.isë ===ì²ë¼ ê°ì ë¹êµí ë ì¬ì©ëë í¹ë³í ë´ì¥ ë©ìëì¸ë°, ìëì ê°ì ë ê°ì§ ìì§ ì¼ì´ì¤ìì ===ë³´ë¤ ì¢ ë ì 뢰í ë§í 결과를 ë³´ì¬ì¤ëë¤.
NaNì ëìì¼ë¡ ë¹êµí ë:Object.is(NaN, NaN) === trueì.0ê³¼-0ì´ ë¤ë¥´ê² ì·¨ê¸ëì´ì¼ í ë:Object.is(0, -0) === falseì. ì«ì를 ëíë´ë ë¹í¸ê° 모ë 0ì´ëë¼ë ë¶í¸ë¥¼ ëíë´ë ë¹í¸ë ë¤ë¥´ë¯ë¡0ê³¼-0ì ì¬ì¤ ë¤ë¥¸ ê°ì´ê¸´ í©ëë¤.
ì´ ë ìì§ ì¼ì´ì¤ë¥¼ ì ì¸í곤, Object.is(a, b)ì a === bì ê²°ê³¼ë ê°ìµëë¤.
ì´ë° ìì ë¹êµë ìë°ì¤í¬ë¦½í¸ ëª
ì¸ììì ì¢
ì¢
ì°¾ìë³¼ ì ììµëë¤. ë´ë¶ ìê³ ë¦¬ì¦ìì ë ê°ì ë¹êµí´ì¼ íëë°, ë¹êµ ê²°ê³¼ê° ì íí´ì¼ íë ê²½ì° Object.is를 ì¬ì©íì£ . Object.isìì ì¬ì©ëë ë¹êµë°©ìì ëª
ì¸ììì SameValueë¼ê³ ë¶ë¦½ëë¤.
parseIntì parseFloat
ë¨í ë§ì
ì°ì°ì + ëë Number()를 ì¬ì©íì¬ ì«ìíì¼ë¡ ë³íí ë ì ì©ëë ê·ì¹ì 꽤 ì격í©ëë¤. í¼ì°ì°ìê° ì«ìê° ìëë©´ í ë³íì´ ì¤í¨í©ëë¤.
alert( +"100px" ); // NaN
ì격í ê·ì¹ì´ ì ì©ëì§ ìë ì ì¼í ìì¸ë 문ìì´ì ì²ì ëë ëì ê³µë°±ì´ ìì´ì 공백ì 무ìí ëì ëë¤.
ê·¸ë°ë° ì¤ë¬´ìì CSS ë±ìì '100px', '12pt'ì ê°ì´ ì«ìì ë¨ì를 í¨ê» ì°ë ê²½ì°ê° íí©ëë¤. ëë¤ì êµê°ìì '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, aë ì«ìê° ìëë¯ë¡ ì«ì를 ì½ë ê² ì¤ì§ë©ëë¤.
parseInt(str, radix)ì ë ë²ì§¸ ì¸ìparseInt()ì ë ë²ì§¸ ë§¤ê° ë³ìë ì íì ì¼ë¡ ì¬ì©í ì ììµëë¤. radixë ìíë ì§ì를 ì§ì í´ ì¤ ë ì¬ì©í©ëë¤. ë°ë¼ì parseInt를 ì¬ì©íë©´ 16ì§ì 문ìì´, 2ì§ì 문ìì´ ë±ì íì±í ì ììµëë¤.
alert( parseInt('0xff', 16) ); // 255
alert( parseInt('ff', 16) ); // 255, 0xê° ìì´ë ëìí©ëë¤.
alert( parseInt('2n9c', 36) ); // 123456
기í ìí í¨ì
ìë°ì¤í¬ë¦½í¸ìì ì ê³µíë ë´ì¥ ê°ì²´ Mathì ë¤ìí ìí ê´ë ¨ í¨ìì ììë¤ì´ ë¤ì´ììµëë¤.
ëª ê°ì§ ìì를 ì´í´ë´ ìë¤.
Math.random()-
0ê³¼ 1 ì¬ì´ì ëì를 ë°íí©ëë¤(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)-
nì powerë² ê±°ëì ê³±í ê°ì ë°íí©ëë¤.alert( Math.pow(2, 10) ); // 2ì 10ì ê³± = 1024
ì´ ì¸ìë ì¼ê°ë²ì í¬í¨í ë¤ìí í¨ìì ììê° Mathì ììµëë¤. ìì¸í ë´ì©ì MDN 문ììì ì½ì´ë³´ì기 ë°ëëë¤.
ìì½
0ì´ ë§ì´ ë¶ì í° ì«ìë ë¤ìê³¼ ê°ì ë°©ë²ì ì¬ì©í´ ìëë¤.
- 0ì ê°ì를
'e'ë¤ì ì¶ê°í©ëë¤.123e6ì 0ì´ 6ê°ì¸ ì«ì,123000000ì ëíë ëë¤. 'e'ë¤ìì ììê° ì¤ë©´, ììì ì ëê° ë§í¼ 10ì ê±°ëì ê³±í ì«ìë¡ ì£¼ì´ì§ ì«ì를 ëëëë¤.123e-6ì0.000123ì ëíë ëë¤.
ë¤ìí ì§ë²ì ì¬ì©í ìë ììµëë¤.
- ìë°ì¤í¬ë¦½í¸ë í¹ë³í ë³í ìì´ 16ì§ì(
0x), 8ì§ì(0o), 2ì§ì(0b)를 ë°ë¡ ì¬ì©í ì ìê² ì§ìí©ëë¤. parseInt(str, base)를 ì¬ì©íë©´strìbaseì§ìë¡ ë°ê¿ì¤ëë¤(ë¨,2 ⤠base ⤠36).num.toString(base)ë ì«ì를baseì§ìë¡ ë°ê¾¸ê³ , ì´ë¥¼ 문ìì´ ííë¡ ë°íí©ëë¤.
12ptë 100pxê³¼ ê°ì ê°ì ì«ìë¡ ë³ííë ê²ë ê°ë¥í©ëë¤.
parseInt/parseFloat를 ì¬ì©íë©´ 문ìì´ìì ì«ìë§ ì½ê³ , ì½ì ì«ì를 ìë¬ê° ë°ìí기 ì ì ë°íí´ì£¼ë âì½íâ í ë³íì ì¬ì©í ì ììµëë¤.
ìì를 ì²ë¦¬íë ë° ì°ì´ë ë©ìëë ë¤ìê³¼ ê°ìµëë¤.
Math.floor,Math.ceil,Math.trunc,Math.round,num.toFixed(precision)를 ì¬ì©íë©´ ì´ë¦¼ì를 구í ì ììµëë¤.- ìì를 ë¤ë£° ë ì ë°ë ìì¤ì 주ìíì¸ì.
ì´ ì¸ìë ë¤ìí ìí í¨ìê° ììµëë¤.
- ìí ì°ì°ì´ íìí ë Math ê°ì²´ë¥¼ ì°¾ìë³´ì¸ì. ìì ê°ì²´ì´ì§ë§ 기본ì ì¸ ì°ì°ì ëë¶ë¶ ë¤ë£° ì ììµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.