如何将数字字符串转换为数字(十进制)和数字转换为字符串

Isu*_*uru 14 string decimal clojure

如何编写函数将十进制数字串转换为十进制数和十进制数转换为字符串?

Vla*_*eev 35

有很方便的clojure函数可以从任何东西转换为字符串,从类似于数字的东西转换为BigDecimal:

user=> (bigdec "1234")
1234M
user=> (str 1234M)
"1234"
Run Code Online (Sandbox Code Playgroud)

我想这是clojure规范的方式.


BLU*_*IXY 5

此示例将数字字符串转换为数字。

(defn String->Number [str]
  (let [n (read-string str)]
       (if (number? n) n nil)))
Run Code Online (Sandbox Code Playgroud)

样本:

user=> (String->Number "4.5")
4.5
user=> (str 4.5)
"4.5"
user=> (String->Number "abc")
nil
Run Code Online (Sandbox Code Playgroud)

  • 您可能不应该在现实生活中使用它。从文档来看,它可以执行任意代码https://clojuredocs.org/clojure.core/read-string,这是一个巨大的安全漏洞。我认为“bigdec”是一个更好的解决方案。 (13认同)