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