clojure - 将clojure中的任意数字转换为 float

标签 clojure numbers

所以我遇到了这个问题:我正在对向量中的每个元素进行计算。根据向量中的数字,生成的向量可能包含有理数、 float 、科学 float 、大整数、整数。我需要将它们全部转换为 float 或舍入整数。生成的文本是将发送到客户端的 SVG,这些数字是路径的一部分。我可以使用内置的东西来完成它还是应该推出自己的函数?

format 的问题在于它是 java Formatter 类的一个薄包装器。这意味着不会处理大整数,因为 clojure 有自己的实现。

另一方面,cl-format(实际上应该是主要选择)可以很好地格式化除有理数之外的所有内容 - 4/5 转换为 4/5.0。也许我对 cl-format 做错了什么。

我尝试将整个向量(无论如何都需要)键入提示为 double ,但结果始终以有理数形式返回。

如果我遗漏了什么,请帮忙。

最佳答案

转换数据类型不是格式化程序的工作,您应该在将数据交给格式化程序之前确保数据具有您想要打印的类型。

类型提示不是类型转换或强制,它是向编译器提示什么参数最有可能在运行时出现。

您想要的函数是double

user=> (double 42)
42.0
user=> (map double [1.0 1 1.1M 2/3])
(1.0 1.0 1.1 0.6666666666666667)

此外,如果您要对整个向量进行类型提示,则不应使用向量,而应使用双数组。向量不以任何方式根据其内容的类型进行专门化。

关于clojure - 将clojure中的任意数字转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785049/

相关文章:

c - 友好数字函数给出了错误的结果

emacs - 什么时候通过 nREPL 重新加载命名空间还不够,需要重新启动整个服务器进程(甚至 REPL)?

java - 在 ExecutorService 中 hibernate 一个线程 (Java/Clojure)

clojure - 处理 clojure 异常的更好方法以及为什么我的异常没有在 go block 内捕获

php - 在 PHP 中检查字符串是否以数字开头

string - Bash:从字符串中提取(百分比)可变长度数

javascript - 你能用 Jquery 操作字符串中的数字吗?

C++ 数组存储错误的值

java - clojure/scala 互操作?

clojure - 如何在 Clojure 中惯用地打印货币?