fprintf Displays the wrong value

8 ビュー (過去 30 日間)
J
J 2014 年 10 月 22 日
編集済み: J 2014 年 10 月 22 日
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 日
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 日
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.

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

カテゴリ

Help Center および File ExchangeEntering Commands についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by