【发布时间】:2012-08-02 10:04:50
【问题描述】:
我正在尝试使用协议来创建工程编号类型(“knumber”),所以我可以说(+ "1k" "2Meg") 并得到类似"2.001Meg" 的内容。我应该能够像(:val my-knumber) 那样从knumber 中获取浮点值,但通常打印机应该显示字符串,它也可以像(:string my-knumber) 那样访问。这个数字将支持所有常用的p、n、u、m、k、Meg、G后缀,并在其中根据需要进行转换,例如(/ "1Meg" "1G") -> "1m")。我希望能够将其传递给任何需要数字的函数。
无论如何,有人可以为此提出一个策略吗?我想我需要使用协议。我目前有一个(defrecord knumber [val string]),但我不确定接下来会发生什么。
clojure 数字满足哪些协议?我想我需要为此扩展一些现有的协议/接口。
谢谢
【问题讨论】:
-
我知道这不是一回事,但你可以使用科学计数法:(/1e6 1e9)