公式计算不正确
Formula isn't Correctly Calculating
我想弄清楚为什么以下计算不正确
x = Math.pow(w,e);
当我在Java中计算时,我得到1075,但我应该得到779。
int e = 17;
int w = 803;
int n = 2773;
double x = 0;
x = Math.pow(w,e) % n;
System.out.println(x);
double
浮点数有53位精度,不足以存储80317这样的大数的精确值。要在 Java 中进行模幂运算,您可以在 BigInteger
上使用 modPow
方法。
因为 (803^17) 是一个非常大的数字,所以您必须为此处使用的变量使用 BigInteger 数据类型,而不是 int 或 double 数据类型。我们不能将整数或双精度变量转换为 BigInteger 变量。
因此,程序将是:
import java.math.BigInteger;
public class JavaPow {
public static void main(String[] args)
{
BigInteger e = new BigInteger("17");
BigInteger w = new BigInteger("803");
BigInteger n = new BigInteger("2773");
BigInteger x;
x = w.modPow(e,n);
System.out.println(x);
}
}
我想弄清楚为什么以下计算不正确
x = Math.pow(w,e);
当我在Java中计算时,我得到1075,但我应该得到779。
int e = 17;
int w = 803;
int n = 2773;
double x = 0;
x = Math.pow(w,e) % n;
System.out.println(x);
double
浮点数有53位精度,不足以存储80317这样的大数的精确值。要在 Java 中进行模幂运算,您可以在 BigInteger
上使用 modPow
方法。
因为 (803^17) 是一个非常大的数字,所以您必须为此处使用的变量使用 BigInteger 数据类型,而不是 int 或 double 数据类型。我们不能将整数或双精度变量转换为 BigInteger 变量。
因此,程序将是:
import java.math.BigInteger;
public class JavaPow {
public static void main(String[] args)
{
BigInteger e = new BigInteger("17");
BigInteger w = new BigInteger("803");
BigInteger n = new BigInteger("2773");
BigInteger x;
x = w.modPow(e,n);
System.out.println(x);
}
}