欢迎!请参阅 关于页面 了解更多关于如何进行此操作的信息。
负数的解决方案(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 并重新定义 mod,直接在两个参数具有相同符号时调用 js-mod。它包含之前失败的测试用例,但我还更全面地测试了与 Clojure 实现的对比: https://gist.github.com/aw7/a32bd69923c65bddc23fd63ee062833c
非常感谢,您提交了您的Clojure CA吗?
是的,两小时前。
评论者为:anmonteiro
注意:难道不应该将double-mod函数标记为私有吗?
double-mod
我认为没有必要单独存在double-mod函数,我已经添加了一个补丁,其中将它内联到mod中。
mod
评论者:mfikes
叹气... 补丁中的某些内容在Travis上运行的旧版JavaScriptCore的测试中破坏了。我唯一的猜测是额外的mod测试可能触发了CLJS-910,但这似乎不太可能。