[javascript] JavaScript로 숫자의 소수 부분을 가져옵니다
내가 좋아하는 부동 소수점 숫자를 가지고 3.2
와 1.6
.
숫자를 정수와 소수로 분리해야합니다. 예를 들어, 값이 3.2
두 숫자로 분할 할 것, 즉 3
및0.2
정수 부분을 얻는 것은 쉽습니다.
n = Math.floor(n);
그러나 소수 부분을 얻는 데 문제가 있습니다. 나는 이것을 시도했다 :
remainer = n % 2; //obtem a parte decimal do rating
그러나 항상 올바르게 작동하지는 않습니다.
이전 코드에는 다음과 같은 출력이 있습니다.
n = 3.1 => remainer = 1.1
내가 여기서 무엇을 놓치고 있습니까?
답변
사용 1
하지 말고 사용하십시오 2
.
js> 2.3 % 1
0.2999999999999998
답변
var decimal = n - Math.floor(n)
마이너스 숫자에는 작동하지 않으므로해야 할 수도 있습니다.
n = Math.abs(n); // Change to positive
var decimal = n - Math.floor(n)
답변
문자열로 변환 할 수 있습니까?
n = (n + "").split(".");
답변
0.2999999999999998은 어떻게 받아 들일 수 있습니까? 내가 실수 한 사람이라면 나는 .3의 답을 원할 것입니다. 여기서 우리가 가진 것은 허위 정밀도이며, floor, % 등을 사용한 실험은 Javascript가 이러한 연산에 대해 허위 정밀도를 좋아한다는 것을 나타냅니다. 따라서 문자열 변환을 사용하는 답변이 올바른 방향에 있다고 생각합니다.
나는 이것을 할 것이다 :
var decPart = (n+"").split(".")[1];
특히 100233.1을 사용하고 있는데 “.1″이라는 답을 원했습니다.
답변
내가하는 방법은 다음과 같습니다. 가장 쉬운 방법이라고 생각합니다.
var x = 3.2;
int_part = Math.trunc(x); // returns 3
float_part = Number((x-int_part).toFixed(2)); // return 0.2
답변
이를 수행하는 간단한 방법은 다음과 같습니다.
var x = 3.2;
var decimals = x - Math.floor(x);
console.log(decimals); //Returns 0.20000000000000018
불행히도 정확한 값을 반환하지는 않습니다. 그러나 그것은 쉽게 수정됩니다.
var x = 3.2;
var decimals = x - Math.floor(x);
console.log(decimals.toFixed(1)); //Returns 0.2
소수점 이하 자릿수를 모르는 경우이를 사용할 수 있습니다.
var x = 3.2;
var decimals = x - Math.floor(x);
var decimalPlaces = x.toString().split('.')[1].length;
decimals = decimals.toFixed(decimalPlaces);
console.log(decimals); //Returns 0.2
답변
언어 독립적 인 방법 :
var a = 3.2;
var fract = a * 10 % 10 /10; //0.2
var integr = a - fract; //3
fractioanal 길이가 하나 인 숫자에 대해서만 수정됨에 유의하십시오.)