Clojure - 如果需要的话四舍五入到小数

标签 clojure floating-point rounding

首先,这不是 clojure-rounding-to-decimal-places 的重复项.

这几乎是相同的问题,但有一点不同:我想将值四舍五入到 N 位小数的最大值,但如果不需要,则不添加它们。

4 位小数的示例:

0.0 => 0.0
0.1 => 0.1
8.6667 => 8.6667
3.33333333 => 3.3333
4.66666666 => 4.6667

最佳答案

听起来我们在这里主要关心的是制作数字,当以十进制表示并绘制到屏幕上时,它们将被打印出正确的位数,而不必将该位数传递到可以打印的任何地方从。这是我的一个假设,所以如果我回答错误的问题,我很抱歉。

user> (map (fn [x] {x (Double. (format "%.4f" x))})
                    [0.0 
                     0.1 
                     8.6667 
                     3.33333333 
                     4.66666666])
 ({0.0        0.0} 
  {0.1        0.1} 
  {8.6667     8.6667} 
  {3.33333333 3.3333} 
  {4.66666666 4.6667})

这使用格式来确保它们的格式正确。您还应该通过数学解决这个问题来保存字符串创建和解析。如果速度很重要,如果您非常小心的话,速度可能会更快。

关于Clojure - 如果需要的话四舍五入到小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33179090/

相关文章:

java - 在 Java 中使用 double 类型进行除法时出错

clojure - 如何绑定(bind)动态变量?

comparison - CoreGraphics 中的浮点比较(相等)

java - 格式化字符串以删除科学记数法 - Java

java - 如何检查输入值是整数还是 float ?

javascript - 如何 JavaScript 向下舍入数字 - 继续

vector - 计算自定义 Clojure 向量中的重复项

clojure - 在 Clojure 中比较两个大文件(即;在顶帽对齐中找到未映射的读取)

clojure - 来自除 CL 之外的其他语言的 Clojure 功能概述

floating-point - OCaml - float 函数不起作用