Matlab与Excel在计算上的差异

我在使用Matlab时遇到了一些问题。 我正在做一些有关场外交易的工具(定价,构build折扣曲线等)的计算,首先在Excel中,然后在Matlab中进行比较。 虽然我100%肯定Excel中的计算是好的(与市场数据相比),但似乎Matlab正在产生一些差异(即-4,18-05E)。 Matlabalgorithm看起来不错。 我想知道 – 也许这是因为Matlab四舍五入计算 – 我听到一点点关于它。 我想通过函数vpa()将双数字转换为浮点数,但是它看起来不能用双数字来处理。 任何其他的想法?

Excel使用符合IEEE 754浮点规范的64位双精度浮点数。

Excel对待结果的方式如=1/5似乎完全计算(尽pipe这个例子不是一个二元的理性)完全是格式化的 。 它同样处理=1/3 + 1/3 + 1/3 。 如果你仔细想一想,Excel的实现者并没有真正的select,因为一般的Excel用户并不是用浮点运算的更精细的点来expression自己的观点,而是简单地嘲笑一个“甚至不能得到”的电子表格包1/5正确“。

这就是说,如果你在两个系统之间有-4,18-05E的差异,你是非常不幸的。 这是因为双浮点数精确到15位有效数字。 如果你始终使用双精度浮点types,那么你的algorithm的实现将会非常糟糕。

最有可能的(我也是在金融方面工作),区别在于你插入折扣曲线的方式。 如果我是你,那我会先看看。

给定与默认format设置相比的错误值,这几乎肯定是因为使用默认format short并将命令行上的输出与实际值进行比较。

 x = 5.4444418 

输出:

x =

 5.4444 

然后:

 x-5.4444 

输出:

ans =

4.1800e-05

存储在x的值保持在5.4444418 ,这只是输出到命令行的度量输出发生了变化。