如何在Java中将数字四舍五入到小数点后四位? [复制]

Posted

技术标签:

【中文标题】如何在Java中将数字四舍五入到小数点后四位? [复制]【英文标题】:How to round numbers to four decimal place in Java? [duplicate] 【发布时间】: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 【参考方案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));

【讨论】:

以上是关于如何在Java中将数字四舍五入到小数点后四位? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

oracle 保留小数问题

如何在 C# 中将数字四舍五入到小数点后两位?

如何在 Matlab 中将数字四舍五入到 10 个正确的小数位

怎样把一串数字字符串的后四位换成****?

C语言 如何实现保留三位小数,第四位四舍五入的程序,详细解释一下程序,网上的看不懂

如何防止excel身份证号码变成科学计数法(后四位变成0)