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
进行格式化,那将会很好。否则,每次我打印或打印一个涉及包含浮点数的集合的字符串时,我都必须调用代码来生成该集合的修改版本,其中的数字将被修剪。