gpt4 book ai didi

java - 如何使用 BigInteger 运算符

转载 作者:行者123 更新时间:2023-12-01 06:42:11 25 4
gpt4 key购买 nike

import java.lang.Math;
import java.math.BigInteger;
import java.math.BigDecimal;

public class Main {
public static void main(String[] args) {
int e1 = 20, d = 13;
BigInteger C = BigDecimal.valueOf(e1).toBigInteger();

BigInteger po = C.pow(d);
System.out.println("pow is:" + po);

int num = 11;
BigInteger x = po;
BigInteger n = BigDecimal.valueOf(num).toBigInteger();
BigInteger p, q, m;

System.out.println("x: " + x);

q=(x / n);
p=(q * n);
m=(x - p);
System.out.println("mod is:" + m);
}
}

我尝试寻找一些与之相关的答案但无法解决。请有人告诉我这有什么问题。我将数据类型更改为整数,但幂函数不起作用。

这是我得到的错误:

error: bad operand types for binary operator '/'
q=(x/n);
^
first type: BigInteger
second type: BigInteger
Main.java:33: error: bad operand types for binary operator '*'
p=(q*n);
^
first type: BigInteger
second type: BigInteger
Main.java:34: error: bad operand types for binary operator '-'
m=(x-p);
^
first type: BigInteger
second type: BigInteger
3 errors

.

最佳答案

说明

您不能在 BigInteger 上使用运算符。它们不是像 int 这样的基元,它们是类。 Java 没有运算符重载。

看看class documentation并使用相应的方法:

BigInteger first = BigInteger.ONE;
BigInteger second = BigInteger.TEN;

BigInteger addResult = first.add(second);
BigInteger subResult = first.subtract(second);
BigInteger multResult = first.multiply(second);
BigInteger divResult = first.divide(second);
<小时/>

运营商详细信息

您可以在 Java Language Specification 中查找运算符的详细定义以及何时可以使用它们。 (JLS)。

以下是相关部分的一些链接:

其中大多数都使用数字类型的概念 §4 ,由整数类型浮点类型组成:

The integral types are byte, short, int, and long, whose values are 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, respectively, and char, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).

The floating-point types are float, whose values include the 32-bit IEEE 754 floating-point numbers, and double, whose values include the 64-bit IEEE 754 floating-point numbers.

此外,如果需要,Java 还可以将 Integer 等包装类拆箱为 int,反之亦然。这增加了拆箱转换 §5.1.8到支持的操作数集。

<小时/>

注释

您创建的 BigInteger 不必要地又长又复杂:

// Yours
BigInteger C = BigDecimal.valueOf(e1).toBigInteger();

// Prefer this instead
BigInteger c = BigInteger.valueOf(e1);

如果可能的话,您应该更愿意从 String 转到 BigInteger 以及从 BigInteger 转到 String。由于 BigInteger 的目的是将其用于太大而无法用基元表示的数字:

// String -> BigInteger
String numberText = "10000000000000000000000000000000";
BigInteger number = new BigInteger(numberText);

// BigInteger -> String
BigInteger number = ...
String numberText = number.toString();

此外,请遵守 Java 命名约定。变量名称应采用驼峰命名法,即 c 而不是 C

此外,更喜欢具有有意义的变量名称。像 cd 这样的名称不能帮助任何人理解变量应该代表什么。

关于java - 如何使用 BigInteger 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55791203/

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