我怀疑是纯粹的好奇心。如何在MATLAB中实现大数的乘法?它是Karatsuba,Toom-3,Fürer还是完全不同的东西?
答案 0 :(得分:5)
如果您对计算算法感兴趣,例如139676498390139139676498390676498390*8745566554641239676498390676498390
,则会发生以下情况:
double
doubles
只能准确地表示最多2^53-1
(check documentation of bitmax
function)(〜10^15
的整数,而您的数字大约为{{1} }})。看看这个示例代码:
10^35
显然不完全是您分配给>> a=139676498390139139676498390676498390;
>> num2str(a)
ans =
139676498390139141600015724509659136
的值 - 只有前16位匹配。
答案 1 :(得分:3)
没有内置的BigInteger
类,如果这是你的意思。您可以使用固定点工具箱,也可以导入相关的java / .NET类。
默认情况下,数字以IEEE双精度浮点格式表示。
答案 2 :(得分:3)
添加答案,如果您需要更多数字的准确性,可以尝试使用此fex file
答案 3 :(得分:0)
如果您的号码很大,但您不需要大量有效数字。每次乘法可以多个小数,例如$ 10 ^ -1 $。跟踪$ N $的乘法次数,并获得$ 10 ^ { - N} $的值。这可能是一个临时工作。