quot 和 rem 函数的实现过于复杂。目前它们是这样的
(defn quot [n d] (fix (/ (- n (js-mod n d)) d))) (defn rem [n d] (- n (* d (quot n d))))
但是 js 中的所有数字已经是双精度浮点数了,所以这些都是不必要
(defn quot [n d] (fix (/ n d))) (defn rem [n d] (js-mod n d)))
注意,“rem”实际上是 js-mod,我不确定为什么以前没有人注意到这一点。现在我还保留 js-mod,因为很多代码都使用它,而且如果我们让 cljs 发展出现数字塔,区分可能会有所重要。
附加的补丁,它还
- 创建了 quot 和 rem 的宏版本。
- 更新了 quot,rem,js-mod 和 mod 的文档,以便更清晰。
- 如果可用,使用 ES6 Math.trunc() 实现 fix(用于四舍五入到零的私有函数)。
现有的 quot 和 rem 测试通过,尽管可以有一些更好的边缘情况测试(负数或正负无穷大的参数)。