gpt4 book ai didi

java - 在双变量中获取数字的问题

转载 作者:搜寻专家 更新时间:2023-11-01 02:32:25 25 4
gpt4 key购买 nike

我在我的 Java 程序中需要一个函数时遇到了一点问题。我想检查数字的总数,一个'double'变量。 (例如:5 应该返回 1,5.0034 应该返回 5,2.04 应该返回 3。)我的函数是这样的:

private int getDoubleLength (double a) {
int len = 0;
while (a != (int) a) {
a *= 10;
}
while (a > 1) {
len ++;
a/=10;
}
System.out.println(String.format("Double %f has %d digits.",a,len));
return len;
}

现在这很完美,但是当我进行一些数学计算时,你会得到 double 的轻微错误:我将 10 除以 cos(60),即 0,5。答案应该是 20.0,但是程序给出了 20.000000000000004(那个数字,我抄的)。我的 while 循环卡住了,程序挂起。

有什么想法吗? (或检查数字数字的其他出色解决方案!)

最佳答案

double 和 float 以及对 then 的运算并不精确,因此与代数计算相比,总会有轻微的错误。如果您使用余弦等,那么您将始终不得不处理这些舍入误差,任何有关数值分析的书籍或网络文本都应该描述这些舍入误差。如果您使用简单的算术运算,请查看 java.lang.BigDecimal

有关如何存储浮点值的详细信息。请参阅 What Every Computer Scientist Should Know About Floating-Point Arithmetic

关于java - 在双变量中获取数字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993124/

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