温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Clojure convert currency string to float
clojure string-parsing

其他 - Clojure将货币字符串转换为float

发布于 2020-04-22 16:42:02

我知道关于将字符串转换为浮点数/数字/小数有很多问题...但是我的情况大不相同,因为我需要转换字符串数(代表美元值),但是在转换中我必须保留美分,这是我的情况。

我收到此值“ 96,26”“ 1.296,26”并且我希望转换为以下形式:96.26 1296.26

如果我尝试使用clojure.edn,它会逃脱

(edn/read-string "1.296,26")
=> 1.296
(edn/read-string "96,26")
=> 96

如果我尝试使用像bugdec这样的其他方法,则会得到NumberFormatException

我知道我们可以做一些字符串替换,但是看起来很麻烦,就像这样:

(-> "1.296,87"
    (clojure.string/replace #"\." "")
    (clojure.string/replace #"," ".")
    (edn/read-string))

查看更多

提问者
Paulo Victor
被浏览
64
leetwinski 2020-02-06 22:05

您可以做的是使用Java的格式化工具:

(defn read-num [s]
  (let [format (java.text.NumberFormat/getNumberInstance java.util.Locale/GERMANY)]
    (.parse format s)))

user> (read-num "1.296,26")
;;=> 1296.26

user> (read-num "96,26")
;;=> 96.26