JavaScript에서 부동 숫자를 Int로 변환

Nithin Krishnan 2023년1월30일
  1. JavaScript에서parseInt()함수를 사용하여 Float를 Int로 변환
  2. JavaScript에서Number.toFixed()를 사용하여 Float를 Int로 변환
  3. JavaScript에서 비트 연산자를 사용하여 Float를 Int로 변환
  4. JavaScript의Math라이브러리 함수를 사용하여 Float를 Int로 변환
  5. 결론
JavaScript에서 부동 숫자를 Int로 변환

JavaScript에는 아래와 같이 float를 int로 변환하는 여러 가지 방법이 있습니다.

  • parseInt()함수
  • Number.toFixed()메소드
  • 비트 연산자로 변환
    • OR를 0으로 적용
    • 이중NOT연산자 사용
    • 오른쪽SHIFT 0
  • JavaScript에서수학라이브러리 기능 사용
    • Math.floor()
    • Math.round()
    • Math.ceil()
    • Math.trunc()

JavaScript에서parseInt()함수를 사용하여 Float를 Int로 변환

parseInt()는 JavaScript에서 널리 사용됩니다. 이 함수를 사용하면 서로 다른 데이터 유형의 값을 정수 유형으로 변환 할 수 있습니다. 이 섹션에서는 부동 숫자를 정수로 변환하는 방법을 살펴 봅니다. parseInt()의 구문은parseInt(<value>)입니다. 다음 코드는 함수의 동작을 보여줍니다.

console.log(parseInt(123.321));
console.log(parseInt(123.998));

출력:

123
123

비고

  • 자세한 내용은 MSN 문서를 참고하세요.
  • float 값을 변환하는 동안parseInt()는 소수를 버리고 float 값의 정수 부분을 반환하는 동안 고려하지 않습니다.
  • parseInt()는 변환이 불가능한 경우NaN을 반환합니다. 따라서 코드가 안전하고 손상되지 않도록 값을 변환하는 동안isNaN()검사를 포함하는 것이 좋습니다.

JavaScript에서Number.toFixed()를 사용하여 Float를 Int로 변환

Number.toFixed()parseInt()와 약간 다르게 동작합니다. 숫자를 가장 가까운 정수 값으로 반올림합니다. 따라서 반올림 사실에주의하십시오. Number.toFixed().5보다 작은 float의 십진수 값을 더 낮은 정수 값으로 반올림합니다. 소수점 값이 ‘0.5’이상이면 부동 소수점 숫자는 다음으로 높은 정수 값으로 반올림됩니다. Number.toFixed()함수의 구문은 다음과 같습니다.

numberObject.toFixed(<number of digits>);

일반적으로 출력에서 ​​소수점 이하 자릿수를 지정하는 매개 변수를이 함수에 전달해야합니다. 기본적으로 매개 변수가0이되므로 정수 값을 반환하므로 인수를 언급 할 필요가 없습니다. 다음 샘플 코드를 참조하십시오.

console.log( (123.123).toFixed(2) );
console.log( (123.123).toFixed() );
console.log( (123.98).toFixed() );
console.log( (123.49).toFixed() );
console.log( (123.5).toFixed() );

출력:

123.12
123
124
123
124

비고

  • parseInt()메소드와 달리Number.toFixed()는 매개 변수로 전달 된 float 값의 반올림을 수행하므로 정수 부분을 추출하는 데 그렇게 유명하지 않습니다.
  • 이 함수를 사용하여 float 값만 변환 할 수 있습니다. parseInt()함수와 달리Number.toFixed()에서는 문자열 값을 float로 변환 할 수 없습니다.

JavaScript에서 비트 연산자를 사용하여 Float를 Int로 변환

parseInt()Number.toFixed()의 메소드를 보았습니다. 둘 다 원하는 결과를 얻기 위해 몇 가지 내부 작업을 실행합니다. 비트 연산자는 두 메서드와 비교할 때 float 값을 정수로 변환하는 데 효율적이고 빠르며 성능이 뛰어납니다. 변환을 위해 다음과 같은 비트 연산자를 사용할 수 있습니다.

OR를 0으로 적용

비트OR연산자를 사용하여 부동 소수점 숫자의 정수 부분을 얻을 수 있습니다. 비트 연산자는 이진 수준에서 작동합니다. 피연산자 번호를 이진수로 변환 한 다음 비트 단위OR연산이 실행됩니다. 허용 가능한 범위의 부동 소수점 숫자에0과 함께OR을 적용하면 부동 소수점 값의 정수 부분이 반환됩니다. 아래의 예를 참조하십시오.

console.log(123.321 | 0);
console.log(123.5432 | 0);
console.log(123.921 | 0);
console.log(216 | 0);
console.log(-321.456 | 0)

출력:

123
123
123
216
-321

Double NOT연산자 사용

또 다른 비트 연산자는~기호로 표시되는NOT연산자입니다. 단항 연산자이므로 비트NOT연산자를 사용하여 부동 숫자에서 소수 부분을 제거 할 수 있습니다. 이진 수준에서NOT연산자는 이진 비트 값을 반전합니다 (1비트의 경우0,0비트 값의 경우1반환). 즉, 숫자가10110으로 이진수로 표시되면 여기에NOT를 적용하면 반전 된 값01001이 제공됩니다. 다시NOT기능을 적용하면 숫자의 원래 비트 (10110)가 반환됩니다. 따라서NOT연산자를 두 번 적용하면 숫자 값이 반환되고 프로세스 중에 정수인 경우 숫자가 변경되지 않습니다. 그러나 부동 값의 경우NOT연산자를 두 번 적용하면 부동 숫자의 정수 부분 만 반환됩니다. 다음 예는이 사실을 명확히합니다.

console.log(~~(123.321));
console.log(~~(123.53));
console.log(~~(23.97));
console.log(~~(-23.97));
console.log(~~(-0.97));

출력:

123
123
23
-23
0

0만큼 오른쪽 시프트

비트 오른쪽 시프트 연산자 (>>문자로 표시됨)를 적용 할 수 있습니다. float 값을 정수로 변환합니다. 이진 수준 아래에서 비트 오른쪽 SHIFT 연산자는 두 번째 피연산자에 지정된 개수만큼 피연산자의 이진 비트를 오른쪽으로 이동합니다. 따라서 오른쪽으로 오버플로되는 비트는 무시됩니다. 이렇게하면 함수는 숫자의 부호 값을 유지합니다. 다음 코드는 오른쪽 SHIFT 연산자의 작동을 나타냅니다.

console.log(123.321 >> 0);
console.log(123.53 >> 0);
console.log(23.97 >> 0);
console.log(-23.97 >> 0);
console.log(-0.97 >> 0);

출력:

123
123
23
-23
0

비고

  • 비트 연산자는 기계 언어에 가장 가깝기 때문에 더 빠르며parseInt()또는Number.toFixed()에 의해 내부적으로 수행되는 것처럼 추가 검사 또는 작업을 수행 할 필요가 없습니다.
  • OR,NOT등과 같은 비트 연산자를 큰 수에 적용하면 예기치 않은 결과가 발생할 수 있습니다. 잘린 십진수 값을 얻기 위해 지원되는 최대 값은2147483647(231 -1)입니다. 2147483647보다 큰 숫자는 예상치 못한 결과를 제공합니다.
  • JavaScript에서 부동 소수점 숫자는 64 비트로 표시되며 부호 값 (양수 또는 음수)을 유지하기 위해 1 비트가 예약되어 있고 정수 부분은 32 비트가 있습니다. 비트 연산자는 10 진수 값을 무시하고 부호있는 32 비트 숫자에서 작동합니다. 따라서 우리는 float 값의 정수 부분을 얻습니다.

JavaScript의Math라이브러리 함수를 사용하여 Float를 Int로 변환

부동 소수점 숫자에서 정수를 가져 오는 다양한 기능이있는 JavaScript Math라이브러리를 사용할 수 있습니다. 비트 연산자와는 달리, 값을 가장 가까운 숫자로 반올림하거나 값을 자르는 등의 요구 사항에 따라 추가 기능을 제공합니다.이를 위해 다음 방법을 사용할 수 있습니다.

Math.floor()로 변환

Math.floor()함수는 매개 변수로 전달 된 값을 다음으로 낮은 정수 값으로 반올림합니다. Math.floor()의 구문은Math.floor(<float value>)입니다. 다음은 사용법과 부동 소수점을 정수로 변환하는 방법을 보여주는 몇 가지 예입니다.

console.log(Math.floor(123.321));
console.log(Math.floor(123.53));
console.log(Math.floor(23.97));
console.log(Math.floor(-23.97));
console.log(Math.floor(-0.97));

출력:

123
123
23
-24
-1

Math.floor(-23.97)와 같은 음수 부동 숫자의 경우 혼란스러워 보일 수 있지만 함수는 값을 다음 낮은 정수-24로 올바르게 변환합니다. 음수의 숫자 값이 높을수록 실제 값이 적다는 것을 기억하십시오.

Math.round()로 변환

Math.floor()함수와 달리Math.round()는 매개 변수에 전달 된 값에 가깝습니다. 소수점 뒤의 값이5이상이면 숫자는 다음으로 높은 정수로 반올림됩니다. 그렇지 않으면 소수점 뒤의 값이5보다 작 으면 더 낮은 정수로 반올림됩니다. 따라서 소수점 뒤에 오는 값을 기반으로Math.round()함수는Math.floor()또는Math.ceil()함수와 유사하게 작동 할 수 있습니다. 다음은Math.round()를 사용한 몇 가지 예입니다.

console.log(Math.round(123.321));
console.log(Math.round(123.53));
console.log(Math.round(23.97));
console.log(Math.round(-23.97));
console.log(Math.round(-0.97));

출력:

123
124
24
-24
-1

Math.ceil()으로 변환

Math.ceil()함수는Math.floor()함수와 반대로 작동합니다. Math.floor()에서와 같이 다음으로 낮은 정수로 반올림하는 대신Math.ceil()은 다음으로 높은 정수 값을 반환합니다. 다음은Math.ceil()을 사용한 몇 가지 변환입니다.

console.log(Math.ceil(123.321));
console.log(Math.ceil(123.53));
console.log(Math.ceil(23.97));
console.log(Math.ceil(-23.97));
console.log(Math.ceil(-0.97));

출력:

124
124
24
-23
-0

Math.trunc()로 변환

이름에서 알 수 있듯이Math.trunc()함수는 소수 값을 자르고 부동 값의 정수 부분을 반환합니다. 이 방법은 앞에서 설명한 비트 연산자와 유사하다고 생각할 수 있습니다. 여기서는 가장 가까운 정수로 반올림하지 않습니다. 대신 float 값의 정수 부분을 그대로 반환합니다. 다음은Math.trunc()의 몇 가지 사용 사례입니다.

console.log(Math.trunc(123.321));
console.log(Math.trunc(123.53));
console.log(Math.trunc(23.97));
console.log(Math.trunc(-23.97));
console.log(Math.trunc(-0.97));

출력:

123
123
23
-23
-0

결론

부동 값에서 정수 부분을 얻는 방법에는 여러 가지가 있습니다. 비트 연산자는 변환이나 다른 처리의 요구 사항없이 이진 수준에서 작업을 수행하므로 실행 속도가 더 빠릅니다. parseInt(),Math.trunc()및 비트 연산자 (OR by 0, Double NOT,0오른쪽 시프트)는 마치 float 값을 찢는 것처럼 정확한 정수를 제공합니다. 소수점에서 정수 부분 만 반환합니다. 실수를 처리하여 반올림하거나 비즈니스 요구 사항에 따라 가장 가까운 정수를 얻으려면 Number.toFixed(), Math.round(), Math.ceil()Math.floor()함수.

관련 문장 - JavaScript Integer