2 ^ 63 - 1 == 2 ^ 63,MATLAB 2012a中的精度误差

时间:2015-01-14 16:30:27

标签: matlab

我在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

2 个答案:

答案 0 :(得分:3)

命令vpa作为符号数学工具箱的一部分提供。它执行"无限精度"使用除CPU本机浮点值之外的数字表示的数学运算。然而,这确实意味着算术会慢得多,并且这些数字会占用更多的空间。

答案 1 :(得分:1)

Matlab附带一个JRE。使用java类java.math.BigDecimal来解决问题。