在.NET中乘以非常大的整数

时间:2016-05-30 10:29:33

标签: c# .net

假设您有大整数,如1253999939979969998746和9999999999.无论如何在C#中乘以这些大整数?

注意:我已经尝试System.Numerics.BigInteger类构造函数编译器说整数太长

你的建议是什么?

如果这个问题超出主题,请告诉我。

3 个答案:

答案 0 :(得分:8)

您需要使用BigInteger.Parse

BigInteger num = BigInteger.Parse("1253999939979969998746");

如果您尝试使用如下所示的整数值

BigInteger num = 1253999939979969998746;

右侧需要有一个类型,默认情况下会是Int32long。但由于数字太大而不能成为Int32long,转换会失败,因此会出现错误。

正如Tim Schmelter在评论中指出的那样,为了进行乘法,你可以做到以下几点:

BigInteger num = BigInteger.Multiply(BigInteger.Parse("1253999939979969998746"), 
                                     BigInteger.Parse("9999999999"));

答案 1 :(得分:4)

  

BigInteger类型是一个表示一个的不可变类型   任意大整数,其理论上的值没有上限或下限   界限。

示例:

var num1 = BigInteger.Parse("1253999939979969998746");
var num2 = BigInteger.Parse("9999999999");
var result = BigInteger.Multiply(num1, num2);

注意:命名空间:System.Numerics

答案 2 :(得分:1)

System.Numberics.BigInteger没有值的上限或下限。所以你提到的数字可以由BigInteger类处理。

编译器抱怨,因为您可能正在尝试从整数初始化BigInteger。您需要使用字节数组或从字符串解析来初始化它。