我的机器上的realmax是:
1.7977e + 308
我知道我必须以避免长整数计算的方式编写代码,但有没有办法增加限制?
我的意思是像C中的gmp库
您可能会发现vpa(变量精度算术)有用:
R = vpa(A)使用变精度算术(VPA)计算A至少d十进制精度数的每个元素,其中d是当前设置digits.
R = vpa(A,d)使用至少d有效(非零)数字,而不是当前设置digits.
以下是如何使用它的示例:
>> x = vpa('10^500/20')
ans =
5.0e498
Run Code Online (Sandbox Code Playgroud)
注意:
该输出 x是的符号(sym)的类型.当然,你不应该把它转换成double,因为它会超过realmax:
>> double(x)
ans =
Inf
Run Code Online (Sandbox Code Playgroud)使用字符串输入以避免将大输入值评估为double.例如,这不起作用
>> vpa(10^500/20)
ans =
Inf
Run Code Online (Sandbox Code Playgroud)
因为10^500被评估为double,给予inf,然后被用作输入vpa.