作者shouqing0801 (?)
看板MATLAB
标题[问题]matlab读取excel资料数值问题
时间Tue Jun 4 20:46:11 2013
想请教我在excel有一个栏位是38.40 将要用这栏位去做计算
但我读进来matlab做计算时
matlab是以38.399999999999999去显示并做计算
我推测显示是因为format long造成的问题
所以我将其改成format short
虽然matlab是以38.40去做显示
但依旧是用38.399999999999999去做计算
精度会不准,想请问有什麽办法能解决这个问题,
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.81.146
1F:→ kdjf:原因:float point error, 解symbolic toolbox但你得想清楚这 06/04 20:49
2F:→ kdjf:是不是你要的 06/04 20:50
3F:→ kdjf:如果他应该要是整数,就该用int的形态存 06/04 20:59
※ 编辑: shouqing0801 来自: 1.163.81.146 (06/04 22:21)
像我输入38400/1000
但不知道为何运算结果会是38.399999999999999
※ 编辑: shouqing0801 来自: 1.163.81.146 (06/04 22:43)
4F:推 peter0318:使用四舍五入吧~ 06/05 00:41
5F:推 sunev:如果你希望留在整数,请宣告成int 06/05 01:20
我是用实数计算,我不清楚为何excel上面的值是38.40
但我用format long去显示 其值变成38.399999999999999
而不是应该是38.400000000000000
而且运算也是用38.399999999999999计算
我的excel资料里有的是整数,但有的是浮点数,所以没办法全部都设为整数
另外我直接在command windows
输入38.15
ans =
38.149999999999999
谢谢
我能了解前面你们所说的,我只是不知道为什麽会出现这样的情况
这让我无法理解 38.149999999999999 是怎麽来的
虽然在matlab官方讨论区有人贴了相关IEEE文献,
但我还是无法理解,感谢
※ 编辑: shouqing0801 来自: 1.163.81.146 (06/05 02:18)
6F:→ sunev:电脑里的数字是有最小单位的,就这样。 06/05 02:48
十分感谢,文献上面有提到,
想请问有办法令其在运算时是用显示的数字去记算吗?
谢谢.
※ 编辑: shouqing0801 来自: 1.163.81.146 (06/05 02:51)
7F:推 sunev:大多数时候差10^-15没关系,你在乎的话得用支援符号计算 06/05 06:27
8F:→ sunev:的软体,像是mathematica之类的。 06/05 06:27