gpt4 book ai didi

java - 需要更大的整数原始类型

转载 作者:行者123 更新时间:2023-12-04 04:43:16 24 4
gpt4 key购买 nike

我有一个乘以大数的java程序。输出是 long ,但是太小了,输出为0。我觉得没有更大的原始类型。

我能做到的方法是使用 BigInteger类,但随后我必须使用它的 multiply()divide()方法而不是常规 */ ,这样会很不方便。

这是代码行:

System.out.printf("c) In how many of the arrangements in part (a) are all the vowels adjacent?%n    " + "(7! / (2!2!))(6! / 3!2!) = " + (new Factorial(7).r / new Power(new Factorial(2).r,2).r) * (new Factorial(6).r / (new Factorial(6).r * new Factorial(2).r)) + "%n");

它正在使用我的 FactorialPower类,它太大了。

是否有更长的数字类仍然可以使用 */ ?或者还有其他更容易使用的数字类吗?

谢谢。

最佳答案

原始类型(byte、short、int、long)是经典类型,通常——在其他语言(想想 C、C++)中——由处理器架构定义。因此,根据您的 CPU 类型,long 可以是 16 位、32 位或 64 位。

现在 Java 改变了这一点并将这种类型固定为特定长度,而不管处理器架构如何。 See more info here .

如果你需要处理更大的数字,你只剩下 BigInteger , BigDecimal和类似的。请注意:这些类型不使用 CPU 指令,而是“手动”进行数学运算,这意味着它们相当(想想 1000 倍)慢。

另一方面,你在说什么 - 使用 */这些类型被称为 operator overloading .一些编程语言支持它,但在 Java 中这是一个很大的禁忌。有一些预编译器(参见 JFront )但最后我听说它不适用于 BigInteger .

您可以在 Groovy 中编写您的程序或 Scala -- 它们都在 JVM 上运行(Groovy 的语法与 Java 非常相似——主要只是将 .java 重命名为 .groovy 工作)并且都支持 BigInteger 的运算符重载.

关于java - 需要更大的整数原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579940/

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