Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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中,如何将long int转换为rational?_Clojure_Rational Number - Fatal编程技术网

在Clojure中,如何将long int转换为rational?

在Clojure中,如何将long int转换为rational?,clojure,rational-number,Clojure,Rational Number,如何在Clojure中将长整型转换为有理数 这是行不通的: user> (class (/ 5 1)) java.long.Long 您不需要显式地将long转换为rational 克洛朱尔将皈依 一个有理(clojure.lang.Ratio)变成一个long(java.lang.long),当它可以时:当分母是或可以是1 必须时将long或其他int转换为有理数:当除法不能解析为1分母时 因此 (类型(/4-2)) ; java.lang.Long (类型(/4-3)) ; cl

如何在Clojure中将长整型转换为有理数

这是行不通的:

user> (class (/ 5 1))
java.long.Long
您不需要显式地将long转换为rational

克洛朱尔将皈依

  • 一个有理(
    clojure.lang.Ratio
    )变成一个long(
    java.lang.long
    ),当它可以时:当分母是或可以是
    1
  • 必须时将long或其他int转换为有理数:当除法不能解析为
    1
    分母时
因此

(类型(/4-2))
; java.lang.Long

(类型(/4-3))
; clojure.lang.Ratio

您不需要显式地将long转换为rational

克洛朱尔将皈依

  • 一个有理(
    clojure.lang.Ratio
    )变成一个long(
    java.lang.long
    ),当它可以时:当分母是或可以是
    1
  • 必须时将long或其他int转换为有理数:当除法不能解析为
    1
    分母时
因此

(类型(/4-2))
; java.lang.Long

(类型(/4-3))
; clojure.lang.Ratio

有。但这并不是你想要的——如果分母是1,它仍然返回long。但是,如果出于类型测试的目的,Clojure函数将为long返回true

如果您真的想要比率类型,我认为您必须自己编写,因为
rationalize
的源代码会立即深入底层Java

(clojure.lang.Ratio.
   (. BigInteger (valueOf 3))
   (. BigInteger (valueOf 1)))
; 3/1
也许:

(defn myrationalize
   [num]
   (if (integer? num)
      (clojure.lang.Ratio.
         (. BigInteger (valueOf num))
         (. BigInteger (valueOf 1)))
      (rationalize num)))
有一个。但这并不是你想要的——如果分母是1,它仍然返回long。但是,如果出于类型测试的目的,Clojure函数将为long返回true

如果您真的想要比率类型,我认为您必须自己编写,因为
rationalize
的源代码会立即深入底层Java

(clojure.lang.Ratio.
   (. BigInteger (valueOf 3))
   (. BigInteger (valueOf 1)))
; 3/1
也许:

(defn myrationalize
   [num]
   (if (integer? num)
      (clojure.lang.Ratio.
         (. BigInteger (valueOf num))
         (. BigInteger (valueOf 1)))
      (rationalize num)))

非常感谢你的回答。我知道。我不需要它,但我想要它,问题是如果我想要的话我怎么做。非常感谢你的回答。我知道。我不需要它,但我想要它,问题是如果我想的话,我怎么做。