我在MATLAB中处理任意大数字,我一直在用脚本编写一段时间,最后发现我的问题不是逻辑错误。
就是这样:
>> 2^63 - 1 == 2^63
ans =
1
在MATLAB 2012a中,没有额外的库,是否有办法处理大量2^100
?
修改:
显然,只要2^54
发生精度错误。
第二次修改:
根据{{3}},我可以使用vpa
。这实际上很好地解决了这个问题:
>> vpa(sym(2^63)) - vpa(sym(2^63) - 1)
ans =
1.0
答案 0 :(得分:3)
命令vpa
作为符号数学工具箱的一部分提供。它执行"无限精度"使用除CPU本机浮点值之外的数字表示的数学运算。然而,这确实意味着算术会慢得多,并且这些数字会占用更多的空间。
答案 1 :(得分:1)
Matlab附带一个JRE。使用java类java.math.BigDecimal
来解决问题。