clojure - 使用 Clojure 根据英语语言环境格式化 float 的字符串表示形式

标签 clojure

我的机器上的语言环境是 sv_SE.utf8,我希望格式在格式化字符串时遵循 en_GB.utf8 的约定。目前

(format "%f" 0.1) ; => 0,1

而不是

(format "%f" 0.1) ; => 0.1

我似乎无法将区域设置传递给格式。还有其他方法可以解决这个问题吗?由于它的其他功能,我仍然想继续使用 format。

最佳答案

这对我有用(我的笔记本电脑默认区域设置为 fr-FR,法国!):

(import java.util.Locale)
; => java.util.Locale

(defn my-format [fmt n & [locale]]
  (let [locale (if locale (Locale. locale)
                          (Locale/getDefault))]
    (String/format locale fmt (into-array Object [n]))))

; => #'dev/my-format

(my-format "%f" 0.1)
; => "0,100000"

(my-format "%f" 0.1 "en-GB")
; => "0.100000"

有什么好处吗?

关于clojure - 使用 Clojure 根据英语语言环境格式化 float 的字符串表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281495/

相关文章:

clojure - 尝试动态创建 map

java - 如何在 Clojure 中迭代 TreeMap?

clojure - 调整 clojure reducer 库性能

clojure - 在 Clojure 中,我可以调用一个需要带有 map 的键的函数吗?

css - 重复的花园语法

clojure - 如何让 Clojure 在编译时计算常量局部表达式

string - Clojure 中将字符串转换为整数向量的功能解决方案

java - 如何使用随机唯一数字从大小(等于用户输入)填充数组?编译器

Clojure 宏为函数创建同义词

clojure - 如何在 Clojure 中为记录中的字段设置默认值?