fprintf Displays the wrong value

The following command returns the wrong value when using the command:
fprintf('\ny = %1.2f\n\n',y);
Enter a value for x: 5
y = 45.00
y = 52.00
Here is the code:
clear all; clc
x = input('Enter a value for x: ');
if x == -2 || x == -6 || x == -4;
y = '3';
elseif x == 2;
y = '0';
else
error('Error');
end
clc
% display(y);
fprintf('\ny = %1.2f\n\n',y);

 採用された回答

Image Analyst
Image Analyst 2014 年 10 月 22 日
編集済み: Image Analyst 2014 年 10 月 22 日

1 投票

You're setting y equal to a character string but using %1.2f (which doesn't make sense even if y were a double) instead of %s to display a character string. So it displays the ASCII values of the string. Instead of
y = '0'; % y is a character.
and so on, try
y = 0; % y is a double.
and use %d to display it, not %1.2f, in your fprintf() call.

1 件のコメント

J
J 2014 年 10 月 22 日
I can't believe I missed that. Thank you.

サインインしてコメントする。

その他の回答 (1 件)

Roger Stafford
Roger Stafford 2014 年 10 月 22 日

1 投票

You are assigning y string values, not numerical values, but you are displaying them using 'fprintf' for numerical values (%1.2f), so you have to expect strange results. For example the string value of y = '3' has a corresponding numerical value of 51.
Also you have written
if x == -2 x == -6 x == -4;
but that will not behave as I think you expect. Better read up on the 'if' function to see how to write a valid 'if' condition.

1 件のコメント

Image Analyst
Image Analyst 2014 年 10 月 22 日
That's what I thought at first, but no, what he really needs to read is this http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup. I went ahead and formatted it properly so that the || show up now.

サインインしてコメントする。

カテゴリ

タグ

質問済み:

J
J
2014 年 10 月 22 日

編集済み:

J
J
2014 年 10 月 22 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by