Matlab计算精确度问题?

我在Command Window里面输入0.4-0.3-0.1,得出的结果是 ans = 2.7756e-017不是0。。。。。。。到底怎么回事? 因为今天设置循环的时候怎么弄也不对,才发现这个问题的,请高手解答啊,是设置问题嘛?

对计算机语言而言,浮点数计算肯定丢失精度的。或者说,两个浮点数不能直接相等。这在计算机专业里是一个常识。

或者可以这么解释吧,MATLAB中存储的数据不是连续的(也无法达到连续),两个浮点数的精度也是不相等的。比如,比1大的最小数就是1+eps(1),比2大的最小数就是1+eps(2)。

那么,这种不连续的存储必然导致一些舍入误差。1/3的浮点存储就不会是精确的1/3,所以有时候1.0/3*3不会等于1,而是等于0.99999.....

Matlab中默认是双精度浮点类型(double),这个精度已经很高了。可以通过对应的设置来避免这种浮点计算误差。追问

如何设置啊,我知道浮点数会有误差,1/3*3可能不等于1,但那个是除法啊,我简单的减法运算都不行?0.5-0.2-0.3=0而0.4-0.1-0.3却不等于0?

追答

确实是有点意思。

你用的哪个版本啊?我的2011b也是这样。

好像是这个0.1的存储有问题?可能算是个bug吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-05
float运算确实会有这种问题,跟算法也有关系
你设循环停止的时候可以让误差小于1e-10,近似等于0就好啦追问

啥叫float运算?那我在matlab上面打0.4-0.1-0.3它不给我等于0那不是扯淡嘛。。。。是不是有什么设置出错啊

追答

float就是浮点运算,计算机本身是不会float型运算的,它需要把float转换到整形运算,运算完了再转换回来,不同的运算器的算法略有不同

Matlab计算精确度问题?
Matlab中默认是双精度浮点类型(double),这个精度已经很高了。可以通过对应的设置来避免这种浮点计算误差。

用Matlab 计算出的结果不满足精度要求 如何提高有效数位?
1、修改程序算法 2、修改数据类型,如digits设置小数位数

matlab计算高精度小数?
事实上MATLAB的计算精度远不止你说的15位,只是结果一般以精简的形式表示。要提高结果得显示精度,有两个方法:用vpa函数,这个函数并不是简单地提高运算结果得显示精度,而是在整个计算过程中以你要求的精度进行计算。如以40位浮点数运算:>>1-vpa(1.234e-25,40)ans =实际精确结果不到40位小数,故...

matlab如何设置计算精度
1、我们使用电脑打开matlab。2、在命令行窗口中输入代码:[0:0.1:1]。3、点击回车,我们可以看到结果从0开始每次增加0.1到1结束。4、赋予变量x从0到1等值增大的值。在命令行窗口中输入代码:x=[0:0.1:1]。5、点击回车后便会显示出x变量的赋值结果,我们可以看到x变量内值从0到1每次增加0....

matlab计算高精度小数?
事实上MATLAB的计算精度远不止你说的15位,只是结果一般以精简的形式表示。要提高结果得显示精度,有两个方法:1,用vpa函数,这个函数并不是简单地提高运算结果得显示精度,而是在整个计算过程中以你要求的精度进行计算。如以40位浮点数运算:>>1-vpa(1.234e-25,40)ans =实际精确结果不到40位小数,故以世界结果显示...

matlab中怎么设置计算精度
提高MATLAB中数值的精度,例如下:例如要求矩阵的特征值 A = 1 2 1 3 >> eig(A) !!求矩阵A的全部特征值。ans = !!A的特征值计算如下 0.2679 3.7321 计算的结果如上,但现在精度不够,需要精确到小数点后9到10位。方法如下:1)vpa(eig(A),10) !!使用变量精度算法(VPA...

改变MATLAB的数据精度
1、打开电脑,进入软件中,就会看到以下画面,在上方的菜单栏中点击“file”,之后在子选项中选择“preference”。2、点击之后,就会看到以下画面,点击红框内的选项。3、点击之后,就会看到以下画面,在numeric format 的后面选择long长度,点击。4、点击之后,就会看到以下画面,在这里输入8就好了。

matlab中怎样设置精度?
matlab中设置精度的方法和操作步骤如下:1、首先,打开计算机,进入软件,将看到以下界面。依次单击上方菜单栏中的“File”-->“Preference”,如下图所示。2、其次,完成上述步骤后,将看到以下界面。 单击红色框中的“Command Window”,如下图所示。3、接着,完成上述步骤后,将看到以下界面。 在“...

Matlab怎么修改显示数值格式\/精度\/小数位数
1、第一先双击电脑上的“matlab”软件,打开它。2、然后在命令行输入pi,输入结果只有四位小数,精度较低。3、接着在左上方“主页”一栏中,点击“预设”按钮。4、弹出对话框,能看到“命令行窗口”的预设项:数值显示格式。5、选择切换数值格式,下面以“long”为例,选择数值格式为“long”。6、...

为什么matlab在判断含小数的变量的算数运算结果是否等于某常量时不正确...
在Matlab中,你可以使用 abs(a - b) < epsilon 来判断两个浮点数 a 和 b 是否在某个容差范围内接近,其中 epsilon 是一个很小的正数,比如 1e-6。综上所述,这些问题都源自浮点数运算的精度限制。在编程中,特别是涉及浮点数计算时,要时刻注意浮点数的精度问题,避免直接使用相等比较符号来判断...

相似回答