Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-10-02, 15:59   #1
zdsq_0615
初级会员
 
注册日期: 2008-10-01
年龄: 38
帖子: 6
声望力: 0
zdsq_0615 正向着好的方向发展
问题 [求助]遇到一个奇怪的问题 急!

我用gui实现一个简单的运算器,主程序代码如下:
A = get(handles.A,'String');
B = get(handles.B,'String');
C = get(handles.C,'String');
total=A-B-C;
D = num2str(total);
set(handles.D,'String',D);
guidata(hObject, handles);

运行后结果非常奇怪,比如0-0-0,结果为-48
比如54-2-1,结果是-46 -47,这是什么问题。恳请那位大侠帮忙解决。
zdsq_0615 当前离线   回复时引用此帖
旧 2008-10-02, 20:24   #2
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认 回复: [求助]遇到一个奇怪的问题 急!

引用:
作者: zdsq_0615 查看帖子
我用gui实现一个简单的运算器,主程序代码如下:
A = get(handles.A,'String');
B = get(handles.B,'String');
C = get(handles.C,'String');
total=A-B-C;
D = num2str(total)...
你这个A,B,C都是字符或者字符串,如果直接减的话会按照ASCII字符表转成相应的数字后在减。
‘0’的ASCII字符表上对应十进制48。A-B-C='0'-'0'-'0'=48-48-48=-48。
所以了,应该写成
A = str2num( get( handles.A, 'String' ) );
B = str2num( get( handles.B, 'String' ) );
C = str2num( get( handles.C, 'String' ) );

total = A - B - C;
D = num2str( total );
...
remnant 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 09:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.