我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
我有一个除法的结果,我希望放弃结果数的小数部分。
我该怎么做呢?
当前回答
在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和其他现代浏览器中都可以运行。
其他回答
使用Math.round()。
(亚历克斯的回答更好;我做了一个假设:)
你可以用…
Math.trunc()(截断小数部分,也见下文) Math.floor()(向下舍入) Math.ceil()(取整) Math.round()(四舍五入到最接近的整数)
取决于你想怎么去除小数点。
Math.trunc()尚未在所有平台(即IE)上得到支持,但您可以在此期间轻松使用polyfill。
另一种具有优秀平台支持的截断小数部分的方法是使用位操作符(.e。g | 0)。对数字使用位操作符的副作用是,它会将其操作数视为有符号32位整数,因此删除了小数部分。请记住,这也会破坏大于32位的数字。
你可能还在谈论浮点算术小数舍入的不准确性。
必读书目-每个计算机科学家都应该知道浮点运算。
这是为那些想阻止用户输入十进制数字的人准备的
<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>
你也可以
parseInt(a/b)
固定的会像圆的一样。
对于类似地板的行为使用%:
var num = 3.834234;
var floored_num = num - (num % 1); // floored_num will be 3