如何在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中将数字四舍五入到小数点后四位? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Matlab 中将数字四舍五入到 10 个正确的小数位