fprintf Displays the wrong value

8 次查看(过去 30 天)
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 个)

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 CenterFile Exchange 中查找有关 Entering Commands 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by