gpt4 book ai didi

java - 如何在Java中将计算结果四舍五入到小数点后n位

转载 作者:行者123 更新时间:2023-12-01 18:26:34 25 4
gpt4 key购买 nike

我可以看到有数百篇关于四舍五入小数位主题的帖子。然而,我到处搜索,似乎找不到与我的问题相匹配的先前实例。我对 java 还很陌生。

我正在尝试计算一条线的斜率,将其分配给一个变量,并将该变量的内容格式化为小数点后 4 位。

我尝试过DecimalFormat(似乎返回一个字符串,我需要一个可以在另一阶段计算中使用的数值)我尝试过 BigDecimal (似乎无法弄清楚如何构造它和 setScale)。
下面是我的代码:

import java.math.BigDecimal;


public class Scratch {
public static void main(String[] args) throws Exception {
BigDecimal slope1, slope2, slope3;

slope1 = new BigDecimal((8 - 8) / (20 - 5));
slope2 = new BigDecimal((9 - 8) / (22 - 5));
slope3 = new BigDecimal((9 - 8) / (22 - 20));
slope1 = slope1.setScale(4);
slope2 = slope1.setScale(4);
slope3 = slope1.setScale(4);
System.out.println(slope1);
System.out.println(slope2);
System.out.println(slope3);



}


}

结果输出是:

0.0000
0.0000
0.0000

如何构建大数据对象,设置其比例,并以将计算的实际结果精确到小数点后 4 位而不是 0.0000 的方式进行计算?

任何帮助将不胜感激。我已经搞乱这个好几个小时了。

最佳答案

这里有两个问题。

首先是您在 BigDecimal 的构造函数中使用整数算术。您可以通过将值转换为 double 来解决此问题。

您的第二个问题是您将 slope1 的比例设置了三次,并忽略了 slope2slope3 的值:

slope1 = slope1.setScale(4);
slope2 = slope1.setScale(4); // should be slope2
slope3 = slope1.setScale(4); // should be slope3

但是,修复此问题后,当您尝试计算 slope2 时,您将收到 ArithmeticException。每当您使用 scale() 对数字进行舍入时,您都需要指定 RoundingMode,以便它知道您想要如何舍入。 p>

试试这个:

    slope1 = new BigDecimal((double) (8 - 8) / (20 - 5));
slope2 = new BigDecimal((double) (9 - 8) / (22 - 5));
slope3 = new BigDecimal((double) (9 - 8) / (22 - 20));
slope1 = slope1.setScale(4, RoundingMode.HALF_UP);
slope2 = slope2.setScale(4, RoundingMode.HALF_UP);
slope3 = slope3.setScale(4, RoundingMode.HALF_UP);
System.out.println(slope1); // 0.0000
System.out.println(slope2); // 0.0588
System.out.println(slope3); // 0.5000

关于java - 如何在Java中将计算结果四舍五入到小数点后n位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com