我怎样才能从JavaScript数字中删除小数部分?

我有一个部门的结果,我想放弃结果数字的小数部分。

我怎样才能做到这一点?

你可以用…

  • Math.trunc() (截断小数部分,也见下文)
  • Math.floor() (向下舍入)
  • Math.ceil() (向上舍入)
  • Math.round() (舍入到最接近的整数)

…取决于你想如何去除小数。

Math.trunc()在所有平台(即IE)上都不受支持,但在此期间可以轻松使用polyfill 。

另一种用极好的平台支持截断小数部分的方法是使用按位运算符 (.eg |0 )。 在数字上使用按位运算符的副作用是将其操作数视为带符号的32位整数,因此将除去小数部分。 请记住,这也会破坏大于32位的数字。


你也可能在谈论浮点运算的小数舍入的不准确性。

必读 – 每位计算机科学家应该知道什么是浮点运算 。

你也可以做

 parseInt(a/b) 

使用Math.round()

(亚历克斯的答案是更好的,我做了一个假设:)

您也可以使用双位非运算符来截断小数。

例如

 var x = 9 / 2; console.log(x); // 4.5 x = ~~x; console.log(x); // 4 x = -3.2 console.log(~~x) // -3 

按位运算比math函数有效得多。 double不是按位运算符也似乎略微执行了x | 0 x | 0x << 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(~~)中find

使用Math.round()函数。

 Math.round(65.98) // will return 66 Math.round(65.28) // will return 65 

你也可以使用下面的代码显示小数点后一定数量的数字(听到两位数字):

 var num = 15.46974 num = num.toFixed(2) 

使用ES2015, Math.trunc()可用。

 Math.trunc(2.3) // 2 Math.trunc(-2.3) // -2 Math.trunc(22222222222222222222222.3) // 2.2222222222222223e+22 Math.trunc("2.3") // 2 Math.trunc("two") // NaN Math.trunc(NaN) // NaN 

它不支持在IE11或以下,但在边缘和其他所有现代浏览器。

toFixed将performance得像一轮。

对于类似于行为的地板使用%:

 var num = 3.834234; var floored_num = num - (num % 1); // floored_num will be 3 

对于ES6实现,请使用如下所示的内容:

 const millisToMinutesAndSeconds = (millis) => { const minutes = Math.floor(millis / 60000); const seconds = ((millis % 60000) / 1000).toFixed(0); return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; } 

这里是在上述post的帮助下的详细解释压缩:

1. Math.trunc():用于删除点后面的数字。 它隐式转换。 但是,IE不支持。

例:

Math.trunc(10.5)// 10

Math.trunc(-10.5)// -10

其他替代方法:使用按位不操作符:

例:

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