2
有一天在Clojure repl玩耍,我碰到了这个。为什么Clojure中的(/ 1/2)等于2N?
user=> (/ 1/2)
2N
所以,我想这一点:
user=> (type (/ 1/2))
clojure.lang.BigInt
任何人都知道这是怎么回事呢?
有一天在Clojure repl玩耍,我碰到了这个。为什么Clojure中的(/ 1/2)等于2N?
user=> (/ 1/2)
2N
所以,我想这一点:
user=> (type (/ 1/2))
clojure.lang.BigInt
任何人都知道这是怎么回事呢?
1/2创建Ratio
并且/
函数结束呼叫(clojure.lang.Numbers/divide 1 1/2)
。如果你看看这个定义,它最终会打电话给(clojure.lang.Numbers$RatioOps/divide 1 1/2)
。这将1L
提升为一个比率,执行比率除法,然后将2/1
的结果简化为BigInt
2.
请注意,['clojure.lang.Ratio'](http://github.com/clojure/clojure /blob/master/src/jvm/clojure/lang/Ratio.java)将'numerator'和'denominator'分别保存为Java'Biginteger'。因此,即使可能,随后的反演也不能简单地归结为“长”。 – Thumbnail