【问题标题】:How to round numbers to four decimal place in Java? [duplicate]如何在Java中将数字四舍五入到小数点后四位? [复制]
【发布时间】:2016-05-03 23:30:19
【问题描述】:

假设我有一个简单的浮点数数组

[0.315023, 1.0, 0.12345, 0121111]

并称它为 arr1。

我需要把这个数组变成这样:

[0.3150, 1.0000, 0.1234, 0.1211] *请注意,1.0 现在是 1.0000,而 0.3150 的末尾是 0

我曾尝试使用 for 循环遍历数组并对数字进行四舍五入,如下所示:

// i 代表 arr1 中的一个数字;让我们想象一下“newNum”替换了 arr1 中的原始数字 float newNum = Math.round(i*10000.0000)/10000.0000;

结果如下:

[0.315, 1.0, 0.1234, 0.1211]

如您所见,第一项在末尾缺少 0,第二项在末尾缺少很多零。

我尝试使用 DecimalFormat,但它不适用于浮点数组;我也不想格式化小数,我正在四舍五入。 (虽然我先尝试了一轮然后格式化第二个;由于数据类型的不同,这不起作用)。

看在上帝的份上,请帮助我。这就像我需要为我的项目完成的最后一件事。我是如此接近!提前非常感谢您!

*PS:我需要确保数组保持浮动;我需要稍后使用数组中的数据。

【问题讨论】:

  • 使用BigDecimal。将比例设置为 4。
  • 你的最终数组的类型是什么?浮动?
  • docs.oracle.com/javase/tutorial/java/data/numberformat.html。您的问题不是关于“如何舍入”,而是“如何格式化”。
  • System.out.printf("%.4f %.4f %.4f %.4f%n", 0.315023, 1.0, 0.12345, 0.121111) 将打印0.3150 1.0000 0.1235 0.1211

标签: java arrays rounding decimalformat


【解决方案1】:
DecimalFormat f = new DecimalFormat("##.0000");
  System.out.println(" output : "+ f.format(2.56));

Follows java docs for format data

【讨论】:

    【解决方案2】:

    使用这个:-

     DecimalFormat twoDForm = new DecimalFormat("#.####");
     double d = Double.valueOf(twoDForm.format(newNum));
    

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多