Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Clojure中的(/1/2)等于2N?_Clojure_Division_Bigint - Fatal编程技术网

为什么Clojure中的(/1/2)等于2N?

为什么Clojure中的(/1/2)等于2N?,clojure,division,bigint,Clojure,Division,Bigint,前几天我在Clojure repl里玩的时候遇到了这个 user=> (/ 1/2) 2N 所以我试了一下: user=> (type (/ 1/2)) clojure.lang.BigInt 有人知道这里发生了什么吗?1/2创建了一个比率,/函数最终调用(clojure.lang.Numbers/divide 1/2)。如果你看一下这个定义,它最终会调用(clojure.lang.Numbers$RatioOps/divide 1 1/2)。这将1L提升为一个比率,执行比率除

前几天我在Clojure repl里玩的时候遇到了这个

user=> (/ 1/2)
2N
所以我试了一下:

user=> (type (/ 1/2)) 
clojure.lang.BigInt

有人知道这里发生了什么吗?

1/2创建了一个
比率
/
函数最终调用
(clojure.lang.Numbers/divide 1/2)
。如果你看一下这个定义,它最终会调用
(clojure.lang.Numbers$RatioOps/divide 1 1/2)
。这将
1L
提升为一个比率,执行比率除法,然后将
2/1
的结果简化为
BigInt
2。

注意,a将
分子
分母
作为Java
biginger
s。因此,即使可以,后续的反转也不容易简化为