我有像3.2和1.6这样的浮点数。

我需要把这个数分成整数部分和小数部分。例如,3.2的值将被分成两个数字,即3和0.2

获取整数部分很简单:

n = Math.floor(n);

但是我在计算小数部分时遇到了麻烦。 我试过了:

remainder = n % 2; //obtem a parte decimal do rating

但它并不总是正确工作。

前面的代码有以下输出:

n = 3.1 // gives remainder = 1.1

我错过了什么?


当前回答

我有一个案例,我知道所有的数字都只有一个小数,想要得到小数部分作为整数,所以我最终使用这种方法:

var number = 3.1,
    decimalAsInt = Math.round((number - parseInt(number)) * 10); // returns 1

这也适用于整数,在这些情况下返回0。

其他回答

下面的函数将返回一个包含2个元素的数组。第一个元素是整数部分,第二个元素是小数部分。

函数splitNum(num) { num = num. tostring ().split('.') num[0] = Number(num[0]) if (num[1]) num[1] = Number('0. ')' + num[1]) 否则num[1] = 0 返回num } //像这样调用这个函数 let num = splitNum(3.2) console.log('整数部分是${num[0]} ') console.log('小数部分为${num[1]} ') //或者你可以这样调用它 let [int, deci] = splitNum(3.2) console.log(' int部分是' + int) console.log('小数部分是' + deci)

float a=3.2;
int b=(int)a; // you'll get output b=3 here;
int c=(int)a-b; // you'll get c=.2 value here

我正在使用:

var n = -556.123444444;
var str = n.toString();
var decimalOnly = 0;

if( str.indexOf('.') != -1 ){ //check if has decimal
    var decimalOnly = parseFloat(Math.abs(n).toString().split('.')[1]);
}

输入:-556.123444444

结果:123444444

使用1,而不是2。

js> 2.3 % 1
0.2999999999999998

你可以简单地使用parseInt()函数来帮助,例如: 令decimal = 3.2; let remainder = decimal - parseInt(decimal); document . write(剩余部分);