gpt4 book ai didi

java - Java中如何对大的小数进行四舍五入?

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

我尝试在以下代码中根据我在开始时设置的小数格式舍入小数:

DecimalFormat df = new DecimalFormat("#.000"); 
df.setRoundingMode(RoundingMode.FLOOR);

double a = Double.parseDouble(df.format(43.473684210526315));
double b = Math.pow(a, 10);
double c = Double.parseDouble(df.format(b));

System.out.println(a + " ** " + b + " ** " + c);

我得到的结果是:

43.473 ** 2.4109939006965688E16 ** 2.4109939006965688E16

如您所见,a 的值格式正确。而其他值则不然。在花了很长时间试图了解发生了什么之后,我发现值 2.4109939006965688E16 无法格式化。我在删除 E16 后测试了相同的值,它起作用了。

我的问题是如何舍入这么大的小数,以便它可以用作 a

最佳答案

a 的工作纯属运气。如果初始值为 43.4701,您将看到 43.47。在某些情况下,由于 double 不准确,您会看到超过 3 个小数位。

您只需使用 DecimalFormatter 短暂创建一个 String,然后再次转回 double。您想保留并使用该字符串。

DecimalFormat df = new DecimalFormat("#.000");

double b = Math.pow(43.473684210526315, 10);

String bFormatted = df.format(b);

System.out.println(bFormatted);

为您提供所需的输出24115485538109308.000

关于java - Java中如何对大的小数进行四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468361/

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