在Java中,我可以执行以下操作来格式化显示的浮点数:
String output = String.format("%2f" 5.0);
System.out.println(output);
理论上,我应该能够用这个Clojure做同样的事情:
(let [output (String/format "%2f" 5.0)]
(println output))
但是,当我在REPL中运行上面的Clojure片段时,我得到以下异常:
java.lang.Double cannot be cast to [Ljava.lang.Object;
[Thrown class java.lang.ClassCastException
我做错了什么?
答案 0 :(得分:15)
Java String.format
需要Object[]
(或Object...
),要在Clojure中使用String.format
,您需要将参数包装在数组中:
(String/format "%2f" (into-array [5.0]))
Clojure为格式提供了一个易于使用的包装器:
(format "%2f" 5.0)
凯尔