如何在JavaScript中进行整数除法(获取整数而不是浮点数的除法答案)?

182

在Javascript中有没有函数可以进行整数除法,我的意思是获取整数型的除法答案,而不是浮点数。

在Javascript中有一个Math.floor()的方法可以用于整数除法。你可以将被除数和除数传递给该方法,它将返回最接近商的整数值。

var x = 455/10;
// Now x is 45.5
// Expected x to be 45

但我希望 x 是 45。我试图从这个数字中删除最后一位。


4
你尝试过使用 parseInt 或者 Math.floor 吗? - NG.
1
@SB,我怎样才能在这个问题中使用 parseInt? - Nakib
2
@Nakib,parseInt(455/10); - Smern
2
Nakib - 你可以尝试使用 parseInt(x) - NG.
请参考以下链接:https://dev59.com/yG855IYBdhLWcg3woV_M - Martha
19
现在最好的方法是:var x = Math.trunc(455/10); - Stan Tatarnykov
2个回答

412
var answer = Math.floor(x)

我真诚地希望这将帮助未来在谷歌搜索这个常见问题时的搜索者。


4
谢谢,我已经搜索过了,但没找到,不管怎样还是谢谢你 :) - Nakib
58
我发现一个非常讽刺的事情,就是在我的谷歌搜索中,这是如何解决这个问题的最佳答案。 - Shaun Kruger
35
我发现这个答案并不总是正确的。如果结果是负数,Math.floor() 将返回错误的结果。因此,即使是 Google 也会返回不够正确的答案。这里是链接:https://dev59.com/yG855IYBdhLWcg3woV_M。 - Han
13
这里使用Math.floor()仅适用于给定的数字为正数的情况。查看此处以获取更多解释。通常,使用parseInt()更好地获取数字或字符串的整数部分。 - tnga
15
Math.trunc() 方法解决了处理负数时出现的问题。实际上,如果你只想去掉小数部分,就可以使用 trunc 方法。https://dev59.com/yG855IYBdhLWcg3woV_M#22307150 - B Charles H
显示剩余8条评论

27
var x = parseInt(455/10);

parseInt()函数解析一个字符串并返回一个整数。

radix参数用于指定要使用的数字系统,例如,基数为16(十六进制)表示该字符串中的数字应从十六进制转换为十进制。

如果省略了radix参数,则JavaScript假定以下内容:

If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated
If the string begins with any other value, the radix is 10 (decimal)

47
这种方式效率低下,因为它隐含了一个number.toString()的调用,然后是相对较昂贵的parse操作,与Math.floor相比。不保证parseInt会接受一个number参数。 - Dai
然而,这模拟了Python3的行为:math.inf // 7 == nan => parseInt(Infinity / 7) == NaN - jneuendorf
在PHP中模拟intdiv()可以使用以下类似的方法完成,而不需要奇怪的浮点数或其他问题。 const intDiv = (a, b) => (a - a % b) / b; - oittaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接