2015-09-26 73 views
3

我想知道爲什麼沒有浮動閱讀器字面值。例如:Clojure閱讀器文字爲浮動?

1f 

我發現this,但它沒有任何迴應。 clojure文檔也沒有提到。有沒有計劃添加它,如果不是,這背後的理由是什麼?

回答

3

由於事實上,沒有一個讀者字面值爲32位精度整數。

(class 1) 
; => java.lang.Long 

(class 1.0) 
; => java.lang.Double 

我的猜測是這是一個自以爲是的選擇。 32位是如此的20世紀,是時候繼續前進了。但是,您仍然可以強制使用32位類型(以及短/字節),正如@amalloy所示。

1

Clojure的支持強制float類型定義herehere

(def f1 (float 1)) 
+3

這並不能解釋爲什麼沒有辦法寫一個不需要強制的文字浮點數(單精度)。或者在那裏? –

+1

你也可以定義一個標記文字,甚至可以在代碼中使用'#=(java.lang.Float/parseFloat「1」)'(不在edn中)。 – cgrand

2

我通常只是確保它有一個小數點,如果我需要寫一個真正的浮動。 1.0 VS 1

+0

我的意思是把它寫成評論,而不是回答,但它就是這樣。傻觸摸屏。 – johnbakers

0

而且從@omiel答案,你可以寫1.如果你喜歡更簡潔的語法獲得浮動:

(class 1.) 
; => java.lang.Double