如何在 C# 中将两个 64 位十进制数相乘而不会溢出?
问问题
703 次
4 回答
4
如果您需要 64 个十进制数字,并且它们是整数,则可以使用System.Numerics.BigInteger
struct(需要对System.Numerics.dll
汇编的引用)。
BigInteger firstNumber = BigInteger.Parse("63518439492097324687235465876298368764576527346564625480");
BigInteger secondNumber = BigInteger.Parse("84890247648975285765484902890273086475254764765147643611");
BigInteger product = firstNumber * secondNumber;
于 2013-02-17T10:31:47.260 回答
0
你总是可以用来存储两个数字decimal
相乘的结果。long
long bigNumber = 12345678L;
long anotherBigNumber = 23456789L;
decimal result = bigNumber * anotherBigNumber;
于 2013-02-17T10:31:45.460 回答
0
我认为您可以计算任何数字(只要您愿意),如果首先将该数字转换为字符串(所以两个单独的字符串),而不是获取最后一个数字(字符)并将其与来自另一个字符的每个数字相乘(就像你在学校学到的一样)等等,然后你把它加到你的最终分数上(也作为一个字符串)。我知道这是可以做到的,一开始这将是非常困难的逻辑,但是一旦你创建了这个函数,你就可以乘以你想要的任何数字:)
于 2013-02-17T11:02:38.977 回答
0
如果它们是整数,请使用 System.Numerics 中的 BigInteger 类(参考 System.Numerics.dll!)
如果没有,Codeplex 中有一个 BigRational 类。它本来应该在 System.Numerics 中,但它被踢了。链接: http ://bcl.codeplex.com/releases/view/42782
于 2013-02-17T11:30:34.690 回答