我有像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

我错过了什么?


当前回答

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

其他回答

使用1,而不是2。

js> 2.3 % 1
0.2999999999999998

例如,两个数字相加

function add(number1, number2) {
let decimal1 = String(number1).substring(String(number1).indexOf(".") + 1).length;
let decimal2 = String(number2).substring(String(number2).indexOf(".") + 1).length;

let z = Math.max(decimal1, decimal2);
return (number1 * Math.pow(10, z) + number2 * Math.pow(10, z)) / Math.pow(10, z);
}
var decimal = n - Math.floor(n)

虽然这对负数不成立所以我们可能要这么做

n = Math.abs(n); // Change to positive
var decimal = n - Math.floor(n)

您还可以截断该数字

函数小数(val) { const valStr = val.toString(); const valTruncLength = String(Math.trunc(val)).length; Const dec = valStr。= valTruncLength . length ? valStr。substring(valTruncLength + 1) :“”; 返回12月; } Console.log ("decimals: ", decimals(123.654321)); Console.log ("no decimal: ", decimal (123));

一个简单的方法是:

Var x = 3.2; var decimal = x - Math.floor(x); console.log(小数);/ /返回0.20000000000000018

不幸的是,这并没有返回准确的值。然而,这很容易解决:

Var x = 3.2; var decimal = x - Math.floor(x); console.log (decimals.toFixed (1));/ /返回0.2

如果你不知道小数位数,你可以用这个:

Var x = 3.2; var decimal = x - Math.floor(x); var decimalPlaces = x.toString().split('.')[1].length; decimals = decimal . tofixed (decimalPlaces); console.log(小数);/ /返回0.2