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
'UFO ET IT' 카테고리의 다른 글
사용자 정의 Sublime Text 2 스 니펫의 범위 정의 (0) | 2020.11.15 |
---|---|
Flutter에서 위젯에 테두리를 어떻게 추가하나요? (0) | 2020.11.15 |
Android ListView setSelection ()이 작동하지 않는 것 같습니다. (0) | 2020.11.15 |
C 프로그램을 사용하여 컴퓨터의 MAC 주소를 얻는 방법은 무엇입니까? (0) | 2020.11.15 |
vim에서 현재 줄 아래의 줄을 삭제하는 방법은 무엇입니까? (0) | 2020.11.15 |