문제

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

Name : Value
Name2 : Value2

등.

Peoblem은 값이 때때로 플로트 (정밀도), 정수 또는 형식으로 부유 할 수 있다는 것입니다. 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의 숫자는 Double-Precision 64 비트 형식 IEEE 754로만 표시됩니다. 따라서 JavaScript에는 실제로 정수 유형이 없습니다.

이 숫자의 반올림과 관련하여이를 달성 할 수있는 여러 가지 방법이 있습니다. 그만큼 수학 물체는 우리가 사용할 수있는 세 가지 반올림 방법을 제공합니다.

그만큼 math.round () 가장 일반적으로 사용되며 가장 가까운 정수로 반올림 된 값을 반환합니다. 그런 다음이 있습니다 Math.floor () Wich는 가장 큰 정수를 숫자보다 작거나 동일하게 반환합니다. 마지막으로 우리는 있습니다 Math.ceil () 가장 작은 정수를 숫자보다 크게 반환하는 함수.

또한 있습니다 tofixed () 고정 점 표기법을 사용하여 숫자를 나타내는 문자열을 반환합니다.

추신 : 있습니다 두 번째 논쟁 없음 에서 math.round () 방법. 그만큼 tofixed () ~이다 구체적이지 않습니다, 그것의 이내에 ecmascript 사양은 well입니다

다음은 사용할 수있는 방법입니다 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) 어디 엑스 숫자 수입니다.

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

당신이 사용할 수있는 math.round () 가장 가까운 정수에 숫자를 반올림합니다.

Math.round(532.24) => 532

또한 사용할 수 있습니다 parseint () 그리고 parsefloat () 특정 유형으로 변수를 캐스팅하기 위해,이 경우 정수 및 부동 소수점.

반올림에 대한 아주 좋은 근사치 :

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;
}

숫자의 소수 부분의 길이가 매우 길면 잘못된 경우에만 틀립니다.

Math.floor (19.5) = 19도 작동해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top