gpt4 book ai didi

java - 获取 sqrt 的第 n 位数字 : getting digits that exceed the double scope

转载 作者:行者123 更新时间:2023-12-02 08:40:55 28 4
gpt4 key购买 nike

我有这段代码,它接受一个 digit 并返回 sqrt(2) 中该 digit 位置的数字值>:

public static int sqrtTwo(int digit)
{
//1.41421356237…
double result = Math.sqrt(2.0);

String resultString = String.valueOf(result);

if (digit == 0) {
return Integer.parseInt(resultString.substring(0, 1));
}

if (digit + 1 >= resultString.length()) {
digit = resultString.length() - 2;
}

return Integer.parseInt(resultString.substring(digit + 1, digit + 2));
}

但是我只能通过使用它来获取这么多数字。 Math 类将返回一个受限制的 double 。我想计算一个 sqrt 值,直到某个数字,无论是第 100 位还是第 500 位。我该怎么做?

我找到了这段代码,但它看起来也受到 double 的限制:


static double squareRoot(int number, int precision)
{
int start = 0, end = number;
int mid;

// variable to store the answer
double ans = 0.0;

// for computing integral part
// of square root of number
while (start <= end)
{
mid = (start + end) / 2;

if (mid * mid == number)
{
ans = mid;
break;
}

// incrementing start if integral
// part lies on right side of the mid
if (mid * mid < number) {
start = mid + 1;
ans = mid;
}

// decrementing end if integral part
// lies on the left side of the mid
else {
end = mid - 1;
}
}

// For computing the fractional part
// of square root upto given precision
double increment = 0.1;
for (int i = 0; i < precision; i++) {
while (ans * ans <= number) {
ans += increment;
}

// loop terminates when ans * ans > number
ans = ans - increment;
increment = increment / 10;
}
return ans;
}

最佳答案

大十进制构造函数中的“2”是您想要执行什么操作的值,MathContext 中的 1000 是您想要从中获取多少位数字。

这样我就可以将 sqrt(2) 精确到小数点后 1000 位

public static void main(String[] args) {
BigDecimal digits = new BigDecimal("2");

BigDecimal num = digits.sqrt(new MathContext(1000));
System.out.println(num.toString());

}

关于java - 获取 sqrt 的第 n 位数字 : getting digits that exceed the double scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61394846/

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