MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]遇到一个奇怪的问题 急! (https://www.labfans.com/bbs/showthread.php?t=4697)

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

回复: [求助]遇到一个奇怪的问题 急!
 
[QUOTE=zdsq_0615;17097]我用gui实现一个简单的运算器,主程序代码如下:
A = get(handles.A,'String');
B = get(handles.B,'String');
C = get(handles.C,'String');
total=A-B-C;
D = num2str(total)...[/QUOTE]

你这个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 );
...


所有时间均为北京时间。现在的时间是 14:00

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