UFO ET IT

JavaScript에서 숫자를 반올림하려면 어떻게합니까?

ufoet 2020. 11. 15. 12:10
반응형

JavaScript에서 숫자를 반올림하려면 어떻게합니까?


프로젝트를 진행하는 동안 전 직원이 만든 JS 스크립트를 발견했습니다.이 스크립트는 기본적으로 다음과 같은 형식으로 보고서를 작성합니다.

Name : Value
Name2 : Value2

기타

문제는 값이 때때로 부동 소수점 (정밀도가 다름), 정수 또는 형식 일 수 있다는 것 2.20011E+17입니다. 출력하고 싶은 것은 순수한 정수입니다. 그래도 JavaScript는 많이 모릅니다. 가끔 부동 소수점을 가져와 정수로 만드는 메서드를 작성하려면 어떻게해야합니까?


입력 한 내용을 숫자로 변환 한 다음 반올림해야합니다.

function toInteger(number){ 
  return Math.round(  // round to nearest integer
    Number(number)    // type cast your input
  ); 
};

또는 하나의 라이너로 :

function toInt(n){ return Math.round(Number(n)); };

다른 값으로 테스트 :

toInteger(2.5);           // 3
toInteger(1000);          // 1000
toInteger("12345.12345"); // 12345
toInteger("2.20011E+17"); // 220011000000000000

특정 자릿수로 반올림해야하는 경우 다음 함수를 사용하십시오.

function roundNumber(number, digits) {
            var multiple = Math.pow(10, digits);
            var rndedNum = Math.round(number * multiple) / multiple;
            return rndedNum;
        }

ECMAScript 사양 에 따르면 JavaScript의 숫자는 배정 밀도 64 비트 형식 IEEE 754로만 표현됩니다. 따라서 JavaScript에는 실제로 정수 유형이 없습니다.

이 숫자의 반올림과 관련하여이를 달성 할 수있는 여러 가지 방법이 있습니다. 수학의 목적은 우리 세 반올림 방법은 우리가 사용할 수있는 이십 기가 바이트 제공합니다 :

Math.round ()는 가장 일반적으로는 가장 가까운 정수로 반올림 값을 반환, 사용됩니다. 그런 다음 Math.floor () 는 숫자보다 작거나 같은 가장 큰 정수를 반환합니다. 마지막으로 숫자보다 크거나 같은 가장 작은 정수를 반환 하는 Math.ceil () 함수가 있습니다.

고정 소수점 표기법을 사용하여 숫자를 나타내는 문자열을 반환하는 toFixed () 도 있습니다 .

시는 : 없다 아무 두번째 인수 에서 Math.round () 방법. 에서는 toFixed는 () 이다 IE의 특정하지 , 그 안에 ECMA 스크립트 사양 aswell


다음은 Math.round()두 번째 인수 (반올림을위한 소수 자릿수)와 함께 사용할 수있는 방법입니다 .

// 'improve' Math.round() to support a second argument
var _round = Math.round;
Math.round = function(number, decimals /* optional, default 0 */)
{
  if (arguments.length == 1)
    return _round(number);

  var multiplier = Math.pow(10, decimals);
  return _round(number * multiplier) / multiplier;
}

// examples
Math.round('123.4567', 2); // => 123.46
Math.round('123.4567');    // => 123

당신은 또한 사용할 수 toFixed(x)또는 toPrecision(x)여기서 X는 숫자의 수입니다.

이 두 가지 방법은 모든 주요 브라우저에서 지원됩니다.


Math.round ()사용하여 숫자를 가장 가까운 정수로 반올림 할 수 있습니다 .

Math.round(532.24) => 532

Also, you can use parseInt() and parseFloat() to cast a variable to a certain type, in this case integer and floating point.


A very good approximation for rounding:

function Rounding (number, precision){

var newNumber;
var sNumber = number.toString();

var increase = precision + sNumber.length - sNumber.indexOf('.') + 1;

if (number < 0)
  newNumber = (number -  5 * Math.pow(10,-increase));
else
  newNumber = (number +  5 * Math.pow(10,-increase));

var multiple = Math.pow(10,precision);

return Math.round(newNumber * multiple)/multiple;
}

Only in some cases when the length of the decimal part of the number is very long will it be incorrect.


Math.floor(19.5) = 19 should also work.

참고URL : https://stackoverflow.com/questions/246193/how-do-i-round-a-number-in-javascript

반응형