声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 847|回复: 2

[综合讨论] 请看下两个相似代码,为何一个可行,另一个不行

[复制链接]
发表于 2010-5-24 14:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
clear;
for i=10:10:90,  x(i/10)=i; end
x

for i=0.1:0.1:0.9, x1(i*10)=i; end
x1

如上两个相似的代码,都是为了循环出现一个矩阵
为何i/10 可以运行,i*10的不能运行

[ 本帖最后由 ChaChing 于 2010-5-24 19:59 编辑 ]
回复
分享到:

使用道具 举报

发表于 2010-5-24 15:16 | 显示全部楼层
这涉及到浮点小数在计算机中表示以及计算问题(在浮点计算体制下,有些小数是不能用有限二进制位数精确表示的),如果是整数运算结果还是整数没有这样的情况:
楼主试试下面代码:


  1. >> isequal((0.1+0.2)*10,3)
  2. ans =
  3.      0
复制代码
第二种情况最好加个round:

  1. for i=0.1:0.1:0.9
  2.     x1(round(i*10))=i;
  3. end
  4. x1
复制代码

[ 本帖最后由 rocwoods 于 2010-5-24 15:17 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2010-5-24 19:30 | 显示全部楼层
谢谢LS,发现了,确实是数据类型的问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 17:42 , Processed in 0.098490 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表