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