登录论坛

查看完整版本 : [求助]遇到一个奇怪的问题 急!


zdsq_0615
2008-10-02, 15:59
我用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,这是什么问题。恳请那位大侠帮忙解决。

remnant
2008-10-02, 20:24
我用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 );
...