我有像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
我错过了什么?
我有像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 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
其他回答
var decimal = n - Math.floor(n)
虽然这对负数不成立所以我们可能要这么做
n = Math.abs(n); // Change to positive
var decimal = n - Math.floor(n)
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
一个不错的选择是将数字转换为字符串,然后分割它。
// Decimal number
let number = 3.2;
// Convert it into a string
let string = number.toString();
// Split the dot
let array = string.split('.');
// Get both numbers
// The '+' sign transforms the string into a number again
let firstNumber = +array[0]; // 3
let secondNumber = +array[1]; // 2
在一行代码中
let [firstNumber, secondNumber] = [+number.toString().split('.')[0], +number.toString().split('.')[1]];
语言独立方式:
var a = 3.2;
var fract = a * 10 % 10 /10; //0.2
var integr = a - fract; //3
注意,它只对分数长度为一个的数字正确)
我正在使用:
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