숫자와 수학

쇼핑 카트는 가격을 더하고, 게임은 점수를 추적하고, 폼은 얼마나 많은 세금을 부과할지 계산합니다. 이 모든 것은 숫자와 그것들을 사용한 산술로 귀결됩니다. JavaScript는 숫자를 핵심 구성 요소 중 하나로 취급하며, 이 장에서는 숫자로 할 수 있는 것들을 다룹니다: 일상적인 수학, 반올림과 무작위성을 위한 기본 제공 도우미, 그리고 거의 모든 사람을 곤란하게 하는 부분인 페이지에 입력된 텍스트를 더할 수 있는 숫자로 변환하는 것입니다.
숫자와 산술
JavaScript는 하나의 number 타입을 가지고 있으며, 모든 것을 포함합니다. 42와 같은 정수와 9.99와 같은 소수는 모두 같은 종류의 값이므로 그들 사이에서 선택할 필요가 없습니다:
const price = 9.99;
const quantity = 3;
const total = price * quantity;
console.log(total); // 29.97수학은 이미 알고 있는 기호로 합니다: +는 더하고, -는 빼고, *는 곱하고, /는 나눕니다. 덜 익숙한 하나가 더 있는데, 그것은 %인 나머지입니다. 이것은 나눈 후 남은 것을 줍니다:
const remainder = 7 % 2;
console.log(remainder); // 17을 2로 나누면 3이고 1이 남으므로, 7 % 2는 1입니다. 이것은 숫자가 짝수인지 확인하는 방법입니다: 짝수를 2로 나누면 남은 것이 없으므로, number % 2는 짝수의 경우 0이고 홀수의 경우 1입니다.
number 타입이 있으므로 정수와 소수는 같은 것이며 그들 사이에서 선택할 필요가 없습니다. 연산자는 + - * /와 나머지인 %입니다. 나누면 남은 것을 줍니다. 편리한 트릭은 % 2입니다: 짝수는 0이고 홀수는 1입니다. Math 객체
기본 연산자보다 더 필요할 때, JavaScript는 **Math**를 제공하며, 이는 수학 도우미의 기본 제공 컬렉션입니다. 점으로 이름을 호출합니다:
console.log(Math.round(4.6)); // 5
console.log(Math.floor(4.6)); // 4
console.log(Math.ceil(4.1)); // 5Math.round는 가장 가까운 정수로 반올림하고, Math.floor는 항상 내림하고, Math.ceil은 항상 올림합니다. 또한 Math.max와 Math.min이 있으며, 이들은 제공한 숫자 중 가장 크거나 가장 작은 것을 선택합니다:
console.log(Math.max(3, 8, 5)); // 8
console.log(Math.min(3, 8, 5)); // 3그리고 Math.random은 0부터 (포함하지 않음) 1까지의 무작위 소수를 줍니다. 자체로는 원하는 것이 거의 없으므로 일반적인 패턴은 이를 곱하고 정수를 얻기 위해 floor합니다:
const roll = Math.floor(Math.random() * 6) + 1;
console.log(roll); // 4 (매번 다른 숫자)Math.random() * 6은 0에서 6까지의 어딘가에 도달하고, Math.floor는 이를 0에서 5까지의 정수로 떨어뜨리고, + 1은 이를 1에서 6까지의 주사위 굴림으로 이동합니다.
Math는 점으로 호출하는 즉시 사용 가능한 수학 도우미의 도구상자입니다: Math.round, Math.floor (내림), Math.ceil (올림), 그리고 가장 크고 작은 것을 위한 Math.max / Math.min입니다. Math.random은 0부터 1까지의 소수를 주며, 기억할 가치가 있는 패턴은 무작위 정수를 위한 Math.floor(Math.random() * n)입니다. 그 패턴을 신뢰하는 데 몇 번 시도해야 했으므로, 복사하고 천천히 읽어보세요. 문자열을 숫자로 변환하기
페이지에 입력한 모든 것은 숫자처럼 보이더라도 **text**로 도착합니다. 상자에 5를 입력하면 숫자 5가 아니라 문자열 "5"를 얻습니다. 이것이 중요한 이유는 두 문자열에 +를 사용하면 더하기 대신 결합하기 때문입니다:
const a = "5";
const b = "3";
console.log(a + b); // "53", 8이 아님수학을 하려면 먼저 텍스트를 숫자로 변환합니다. 가장 명확한 방법은 Number()입니다:
const count = Number("5");
console.log(count + 3); // 8보게 될 두 가지가 더 있습니다: parseInt는 정수를 읽고 모든 소수를 버리며, parseFloat는 소수를 유지합니다:
console.log(parseInt("42px")); // 42
console.log(parseFloat("9.99")); // 9.99이 둘 다 "42px"와 같이 텍스트 시작에 있는 숫자를 읽을 수 있으며, Number는 할 수 없습니다. 또한 +를 문자열 앞에 놓는 단축키도 있으며, 이는 Number와 같은 방식으로 변환합니다:
console.log(+"7"); // 7"5"는 숫자 5가 아니며, "5" + "3"은 8 대신 "53"을 제공합니다. 먼저 변환합니다: Number("5")는 가장 명확하고, parseInt는 정수를 읽고, parseFloat는 소수를 유지하며, 문자열 앞에 +를 사용하는 것은 빠른 단축키입니다. 결합 대신 더하기를 하는 함정을 주시하세요. 누구나 한 번은 걸립니다. 숫자의 날카로운 모서리
JavaScript의 숫자는 초기에 한 번 볼 가치가 있는 놀라움을 담고 있습니다. 두 개의 간단한 소수를 더하면 이상한 답을 얻을 수 있습니다:
console.log(0.1 + 0.2); // 0.30000000000000004이것은 코드의 버그가 아닙니다. 컴퓨터는 모든 값을 정확히 표현할 수 없는 방식으로 소수를 저장하므로 작은 오류가 스며듭니다. 이것은 거의 중요하지 않으며, 중요할 때 표시를 위해 결과를 반올림합니다:
const sum = 0.1 + 0.2;
console.log(Math.round(sum * 100) / 100); // 0.3또한 NaN이라는 값을 만날 것인데, 이는 "not a number"의 약자입니다. 수학 연산이 의미 있는 답이 없을 때 얻습니다. 예를 들어, 말도 안 되는 텍스트를 숫자로 바꾸려고 할 때:
console.log(Number("hello")); // NaN출력에서 NaN을 보는 것은 보통 변환이 어딘가 잘못되었다는 의미이므로, 두려워해야 할 것보다는 유용한 단서입니다.
0.1 + 0.2는 0.30000000000000004로 나옵니다. 이것은 정상이며 코드의 버그가 아닙니다. 중요할 때 표시하기 전에 결과를 반올림합니다. 그리고 NaN은 "not a number"를 의미하며, 변환이 실패했을 때 얻는 답이므로 텍스트가 기대한 대로 숫자로 변환되지 않았다는 단서로 취급합니다. 숫자가 다음으로 가는 곳
숫자는 JavaScript의 몇 가지 핵심 data types 중 하나이며, 텍스트 및 true/false 값 옆에 앉아 있습니다. 대부분의 실제 프로그램은 이들을 혼합하여 문자열에서 숫자를 뽑고, 이를 비교하고, 결과를 variable에 저장하며, 그 비교와 결합을 하는 연산자는 다음의 operators의 주제입니다.

