欢迎!请查看关于页面,了解更多关于此如何工作的信息。
负数的解决方案(https://dev.clojure.org/jira/browse/CLJS-417)会导致浮点数产生令人烦恼的行为
(mod 2.1 3) ; => 2.0999999999999996
Clojure和标准的JavaScript的取模运算符在此都返回预期的2.1。
两种可能的解决方案
评论由:dnolen
欢迎补丁。
评论由:zto
补丁将 cljs.core/mod 重命名为 double-mod,并在两个参数同号时直接调用js-mod重新定义了 mod。它包括了之前失败的测试用例,但我还更全面地与 Clojure 的实现进行了测试: https://gist.github.com/aw7/a32bd69923c65bddc23fd63ee062833c
非常感谢,你提交了 Clojure CA 吗?
是的,2小时前。
评论者:anmonteiro
修订:是否应该将double-mod函数标记为私有函数呢?
double-mod
我认为没有必要单独存在double-mod函数,我已经添加了一个补丁,将其内联到mod函数中。
mod
评论者:mfikes
怒…补丁中的某个东西杀死了我们在Travis上运行的旧JavaScriptCore,我唯一的猜测可能是额外的mod测试触发了CLJS-910,但这似乎不太可能。