JavaScript - 找出一个数可以被另一个数整除的次数

11

有没有一种简单的方法在JavaScript中找出一个数可以被另一个数整除多少次?

比如11除以4,我知道4可以被整除2次。

我有以下代码,但是我记得可能有更简单的方法?

<script>
a = 11;
b = 4;

i = a % b;
i2 = a - i;
solution = i2 / b;
document.write(solution); // 2
</script>
2个回答

36

那么关于这个问题...

Math.floor(11 / 4);

如果你需要处理负数(感谢Ted Hopp),你可以使用~~|0或者其他任何将操作数视为32位有符号整数的位运算技巧。请注意,除了这会令人困惑外,它也不能处理超过32位的数字。

~~(11 / 4);

2
如果商有可能是负数,那么Math.floor不是正确的工具。 - Ted Hopp

12

你可以使用这个技巧:

(a / b) >> 0

将数字按0位移动会截断小数部分。这总是朝向0舍入,而 Math.floor 在处理负数时不会这样做。


使用 任何 位运算符都会截断小数部分吗?(不是我的踩) - alex
1
@alex - 差不多就是这样。你建议使用~~的方法很好。我只是想做一个位运算而已。:) -- 啊!我刚看到你也建议使用|0。这和我的技巧一样简单! - Ted Hopp
1
我给了你一个点赞,因为这个提示很有用。我从未通过前面板开关进行编程,但听起来很有趣。我很想和你喝一杯,但我相信我们可能住在不同的洲。 - alex
1
@alex - 给你加一分。下次我举起一杯冰冷的饮料时,我会向你挥手。我想我得向我的脚挥手了! - Ted Hopp
有趣。我更喜欢 Math.floor(11 / 4);但这个可以处理负数。 - user1822824

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