Matlab和Python中浮点数有何区别?

时间:2018-08-02 10:11:45

标签: python matlab precision

我正在从Matlab priority文件版本5导入一些数字到python中,它们具有不同的精度。

这是python代码:

"mat"

为什么python和matlab具有不同的精度?

3 个答案:

答案 0 :(得分:2)

默认情况下,MATLAB和Python / Numpy都使用相同的浮点表示形式,即64位浮点数(双精度)。如何存储它是由您的CPU决定的,而不是由程序决定的(该程序基本上可以在32位,64位和80位浮点数之间进行选择,这是普通PC在CPU中理解的表示形式。)

您看到的区别是程序如何选择显示数字。内部表示是相同的。

如果显示的这些数字之间的差异与您的应用程序有关,则您做错了。浮点计算从定义上讲是不精确的,您不能指望后几位有意义。

答案 1 :(得分:1)

希望此链接中的答案有帮助:

https://ww2.mathworks.cn/matlabcentral/answers/77455-raising-to-the-power-of-large-numbers-is-giving-me-the-wrong-answer

引用回答问题的人:

  

通常,MATLAB使用双精度,这大致意味着您   可以期望16位精度。

答案 2 :(得分:0)

我注意到Python的行为与其他软件包(包括Matlab(也是SPSS Modeler,Excel)。 也就是说,有时会以某种方式提供1-2个额外的小数。 例如:

In [53]: import numpy

In [54]: numpy.pi
Out[54]: 3.141592653589793

In [55]: numpy.pi * 10000
Out[55]: 31415.926535897932

In [56]: numpy.pi * 100000
Out[56]: 314159.2653589793

In [57]: len(str(numpy.pi))
Out[57]: 17

而其他人则坚持使用16位“有意义”的数字