首页 文章

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

提问于
浏览
0

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

  • 3

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

  • 1

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

相关问题