我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
当前回答
对于ES6实现,使用如下代码:
const millisToMinutesAndSeconds = (millis) => {
const minutes = Math.floor(millis / 60000);
const seconds = ((millis % 60000) / 1000).toFixed(0);
return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
}
其他回答
使用Math.round()函数。
Math.round(65.98) // will return 66
Math.round(65.28) // will return 65
你也可以
parseInt(a/b)
对于ES6实现,使用如下代码:
const millisToMinutesAndSeconds = (millis) => {
const minutes = Math.floor(millis / 60000);
const seconds = ((millis % 60000) / 1000).toFixed(0);
return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
}
还可以使用位运算符来截断小数。
e.g.
var x = 9 / 2;
console.log(x); // 4.5
x = ~~x;
console.log(x); // 4
x = -3.7
console.log(~~x) // -3
console.log(x | 0) // -3
console.log(x << 0) // -3
位操作比Math函数要高效得多。双非位操作符的性能似乎也略优于x | 0和x << 0位操作符,其性能可以忽略不计。
// 952 milliseconds
for (var i = 0; i < 1000000; i++) {
(i * 0.5) | 0;
}
// 1150 milliseconds
for (var i = 0; i < 1000000; i++) {
(i * 0.5) << 0;
}
// 1284 milliseconds
for (var i = 0; i < 1000000; i++) {
Math.trunc(i * 0.5);
}
// 939 milliseconds
for (var i = 0; i < 1000000; i++) {
~~(i * 0.5);
}
同样值得注意的是,按位的not运算符优先于算术运算,所以你可能需要用括号来包围计算以得到预期的结果:
x = -3.7
console.log(~~x * 2) // -6
console.log(x * 2 | 0) // -7
console.log(x * 2 << 0) // -7
console.log(~~(x * 2)) // -7
console.log(x * 2 | 0) // -7
console.log(x * 2 << 0) // -7
更多关于双位not操作符的信息可以在双位not (~~)
以下是在上述帖子的帮助下详细解释的压缩:
1. Math.trunc():用于删除后面带点的数字。它隐式地转换。但是,在IE中不支持。
例子:
Math.trunc(10.5) // 10
Math.trunc(-10.5) // -10
其他可选方法:按位使用not运算符:
例子:
x = 5.5
~~x // 5
2. Math.floor():用于给出可能的最小整数值。所有浏览器都支持它。
例子:
Math.floor(10.5) // 10
Math.floor(-10.5) // -11
3.Math.ceil():用于给出可能的最高整数值。所有浏览器都支持它。
例子:
Math.ceil(10.5) // 11
Math.ceil(-10.5) // -10
4. Math.round():四舍五入到最接近的整数。所有浏览器都支持它。
例子:
Math.round(10.5) // 11
Math.round(-10.5)// -10
Math.round(10.49) // 10
Math.round(-10.51) // -11