我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
当前回答
在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及以下版本不支持,但在Edge和其他现代浏览器中都可以运行。
其他回答
还可以使用位运算符来截断小数。
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 (~~)
例如:
var x = 9.656;
x.toFixed(0); // returns 10
x.toFixed(2); // returns 9.66
x.toFixed(4); // returns 9.6560
x.toFixed(6); // returns 9.656000
or
parseInt("10"); // returns 10
parseInt("10.33"); // returns 10
parseInt("10 20 30"); // returns 10
parseInt("10 years"); // returns 10
parseInt("years 10"); // returns NaN
这是为那些想阻止用户输入十进制数字的人准备的
<input id="myInput" onkeyup="doSomething()" type="number" />
<script>
function doSomething() {
var intNum = $('#myInput').val();
if (!Number.isInteger(intNum)) {
intNum = Math.round(intNum);
}
console.log(intNum);
}
</script>
固定的会像圆的一样。
对于类似地板的行为使用%:
var num = 3.834234;
var floored_num = num - (num % 1); // floored_num will be 3
U还可以显示小数点后(这里是2位数)的特定数字,使用以下代码:
var num = (15.46974).toFixed(2) 控制台.log(数字) // 15.47 console.log(类型编号) // 字符串