[javascript] JavaScript로 숫자의 소수 부분을 가져옵니다

내가 좋아하는 부동 소수점 숫자를 가지고 3.21.6.

숫자를 정수와 소수로 분리해야합니다. 예를 들어, 값이 3.2두 숫자로 분할 할 것, 즉 30.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 길이가 하나 인 숫자에 대해서만 수정됨에 유의하십시오.)