Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Clojure中使用空格作为分隔符格式化数字?_Clojure - Fatal编程技术网

如何在Clojure中使用空格作为分隔符格式化数字?

如何在Clojure中使用空格作为分隔符格式化数字?,clojure,Clojure,例如,我可以使用逗号作为分隔符进行格式化: (format "%,d"(BigInteger. "fffff" 16)) ;=> 1,048,575 是否可以改为使用空间: 1 048 575 ? 我不确定这是不是最好的方式,但是,你可以安全地用空间替换。无论如何,在格式化数字之后,它只是一个字符串 (clojure.string/replace (format "%,d" (BigInteger. "fffff" 16)) "," " ") 我尝试使用java.text.Decim

例如,我可以使用逗号作为分隔符进行格式化:

(format "%,d"(BigInteger. "fffff" 16))
;=> 1,048,575
是否可以改为使用空间:

1 048 575 ?

我不确定这是不是最好的方式,但是,你可以安全地用空间替换。无论如何,在格式化数字之后,它只是一个字符串

(clojure.string/replace (format "%,d" (BigInteger. "fffff" 16)) "," " ")

我尝试使用java.text.DecimalFormat,并通过设置java.text.DecimalFormatSymbols的GroupingSeparator方法设置分组分隔符,但失败。

我不确定这是否是最好的方法,但是,您可以安全地用空格替换。无论如何,在格式化数字之后,它只是一个字符串

(clojure.string/replace (format "%,d" (BigInteger. "fffff" 16)) "," " ")

我尝试使用java.text.DecimalFormat,并通过设置java.text.DecimalFormatSymbols的groupingseparator方法设置分组分隔符,但失败。

我认为使用java.util.Formatter是不可能的,而clojure.core/format最终使用的是java.util.Formatter。但是,以下代码将产生预期结果:

(import 'java.text.DecimalFormatSymbols
        'java.text.DecimalFormat
        'java.text.FieldPosition)

(defn format-bigint [i]
  (let [format (DecimalFormatSymbols.)
        out (StringBuffer.)]
    (.setGroupingSeparator format \space)
    (.format (DecimalFormat. ",###" format) i out (FieldPosition. java.text.NumberFormat/INTEGER_FIELD))
    (.toString out)))

我认为,使用clojure.core/format最终使用的java.util.Formatter不可能做到这一点。但是,以下代码将产生预期结果:

(import 'java.text.DecimalFormatSymbols
        'java.text.DecimalFormat
        'java.text.FieldPosition)

(defn format-bigint [i]
  (let [format (DecimalFormatSymbols.)
        out (StringBuffer.)]
    (.setGroupingSeparator format \space)
    (.format (DecimalFormat. ",###" format) i out (FieldPosition. java.text.NumberFormat/INTEGER_FIELD))
    (.toString out)))
您可以使用from clojure.pprint,它是Common Lisp相当广泛且功能非常强大的实现

CL的CL格式和Clojure的常规格式一样,有几个指令,这里D表示数字。:修饰符告诉它在几组数字之间打印逗号,但是,第二个逗号后面的“指定使用空格作为要使用的逗号字符。

您可以使用clojure.pprint,它是Common Lisp相当广泛和非常强大的实现


CL的CL格式和Clojure的常规格式一样,有几个指令,这里D表示数字。:修饰符告诉它在数字组之间打印逗号,但是,第二个逗号后面的“指定使用空格作为要使用的逗号字符。

谢谢。在Clojure中发现一个新的强大功能是令人兴奋的。我读了一些文档。1.双逗号看起来有点奇怪。这是什么意思?2.小写的d也可以。有什么不同吗?是否可以在末尾添加换行符,如\n?我想打印几个数字,每行一个。长答案会很长,所以我最好的短答案是阅读一下链接的CLHS格式文档。我建议您阅读基本选项,然后看看示例。也可以作为一个很好的介绍。它还提供了如何从列表/序列中打印多个值的答案。注意:您必须将CL代码转换为Clojure.:-特别感谢您提供的文档链接。我将阅读它们,并尽我最大的努力对格式包有一个全面的了解。格式做得很好,但在有些情况下,只有cl格式可以很容易地完成工作。例如,格式%a nil==>null,这是反常的,但考虑到该格式是Java函数,这是有意义的。cl格式nil~a nil==>nil。有时cl格式指令看起来像行噪声,但它完成了任务。谢谢。在Clojure中发现一个新的强大功能是令人兴奋的。我读了一些文档。1.双逗号看起来有点奇怪。这是什么意思?2.小写的d也可以。有什么不同吗?是否可以在末尾添加换行符,如\n?我想打印几个数字,每行一个。长答案会很长,所以我最好的短答案是阅读一下链接的CLHS格式文档。我建议您阅读基本选项,然后看看示例。也可以作为一个很好的介绍。它还提供了如何从列表/序列中打印多个值的答案。注意:您必须将CL代码转换为Clojure.:-特别感谢您提供的文档链接。我将阅读它们,并尽我最大的努力对格式包有一个全面的了解。格式做得很好,但在有些情况下,只有cl格式可以很容易地完成工作。例如,格式%a nil==>null,这是反常的,但考虑到该格式是Java函数,这是有意义的。cl格式nil~a nil==>nil。有时cl格式指令看起来像行噪声,但它完成了任务。感谢您的努力!你也可以看看@schaueho的答案。即:clojure.pprint/cl-format函数。感谢您的努力!你也可以看看@schaueho的答案。即:clojure.pprint/cl-format函数。谢谢。我认为这是最后一招,但它仍然有效。谢谢。我认为这是最后的手段,但它仍然有效。