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