using fprintf to print same length values

How can I use fprintf to print values with the same length (the number of digits after the pointer is changing based on the number of digits before the pointer)?
0.00000000
30.0000248
360.000305

Risposte (2)

Azzi Abdelmalek
Azzi Abdelmalek il 30 Dic 2013
Modificato: Azzi Abdelmalek il 30 Dic 2013
b=360.000305
m=9 % fixed length
out=sprintf('%9.9f',b)
ii=numel(strfind(out,'.'))
out=out(1:m+ii)

8 Commenti

What is a?
Never mind. I figured it out and corrected it:
b=[0.00000000
30.0000248
360.000305
12345.678]
m=9; % fixed length
for k = 1 : length(b)
out=sprintf('%9.9f',b(k));
ii=numel(strfind(out,'.'));
out=out(1:m+ii);
fprintf('%s\n', out);
end
Nice clever solution.
Azzi:
I would appreciate it if you finalize the answer and then I will accept this answer.
Ronaldo, Analyst has corrected the answer, in my answer a should be out. Look at edited answer
Azzi, This looks more organized. Please replace it with the current one.
b=[0.00000000
30.0000248
360.000305
12345.678]
m=9; % fixed length
for k = 1 : length(b)
out=sprintf('%9.9f',b(k));
ii=numel(strfind(out,'.'));
out=out(1:m+ii);
fprintf('%s\n', out);
end
This works fine, what is the problem?
Please add the following line (for the sake of completeness). I will accept the answer. Thanks for your great help.
fprintf('%s\n', out);
Ronaldo, I am not adding anything.

Accedi per commentare.

Daniel
Daniel il 1 Set 2017
Modificato: Daniel il 1 Set 2017
b=360.000305
m=9 % fixed length
out=sprintf('%9.9f',b)
ii=numel(strfind(out,'.'))
out=out(1:m+ii)
% Azzi's got no time for correctness
fprintf('%s\n', out)

Categorie

Scopri di più su Get Started with MATLAB in Centro assistenza e File Exchange

Tag

Richiesto:

il 30 Dic 2013

Modificato:

il 1 Set 2017

Community Treasure Hunt

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

Start Hunting!

Translated by