如何在C#中将两个64位十进制数相乘而不会溢出?
答案 0 :(得分:3)
如果您需要64个十进制位数,如果它们是整数,则可以使用System.Numerics.BigInteger
struct(需要引用System.Numerics.dll
汇编)。
BigInteger firstNumber = BigInteger.Parse("63518439492097324687235465876298368764576527346564625480");
BigInteger secondNumber = BigInteger.Parse("84890247648975285765484902890273086475254764765147643611");
BigInteger product = firstNumber * secondNumber;
答案 1 :(得分:0)
您始终可以使用decimal
来存储两个long
数字相乘的结果。
long bigNumber = 12345678L;
long anotherBigNumber = 23456789L;
decimal result = bigNumber * anotherBigNumber;
答案 2 :(得分:0)
我认为你可以计算任何数字(只要你愿意)IF首先将你转换成字符串的数字(所以两个单独的字符串)比得到最后一个数字(字符)并将它与每个数字相乘另一个角色(就像你在学校里学到的那样)等等,你把它添加到你的最终得分号码(也作为一个字符串)。我知道这可以做到并且在开始时它将是一个很难的逻辑但是一旦你创建了这个函数你可以乘以你想要的任何数字:)
答案 3 :(得分:0)
如果它们是整数,请使用System.Numerics中的BigInteger类(参考System.Numerics.dll!)
如果没有,Codeplex中有一个BigRational类。它本来是在System.Numerics中,但它被踢了。链接: http://bcl.codeplex.com/releases/view/42782