1
在Clojure中是否有一些全局的方式來設置浮點數的默認格式?當我想要所有這些零,我會問他們
通常我在嵌套集合中有浮點數。舉一個小例子,這個表情,
(str " -> " linkvec)
在一些代碼一對夫婦矢量我的工作,現在,評估生產:
-> [:source1 :output 0.2 0.2 1]
-> [:source100 :output 0.6000000000000001 0.6000000000000001 100]
大部分的時間,我不關心小數點後顯示16位數的小小舍入錯誤。我寧願將所有浮點數輸出四捨五入到最接近的0.001,舍入後去掉尾隨零。所以,上面會出來找這樣的:
-> [:source1 :output 0.2 0.2 1]
-> [:source100 :output 0.6 0.6 100]
注意,期望輸出爲0.6 0.6
,不0.600 0.600
。
當然,我可以定義一個函數是這樣的:
(defn sigfigs [x]
(format "%.3f" (-> x (* 1000) (math/round) (/ 1000.0))))
但後來我不得不來自世界各地調用它。如果我可以將默認的數字格式化程序設置爲sigfigs
或其他類似的程序,以便str
,println
等會調用該程序,除非我明確使用%f
進行格式化,那將會很好。否則,每次我打印或打印一個涉及包含浮點數的集合的字符串時,我都必須調用代碼來生成該集合的修改版本,其中的數字將被修剪。