How can I force MatLab to display integers in function sprintf ?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Julia
am 10 Jun. 2014
Kommentiert: Stephen23
am 3 Mär. 2015
Hi,
I would like to save graphs in a loop and use sprintf to change the file names, but don't want to have decimal places because this destroys the file extension. The loop is:
for i=1:5
x = [0 ; 0.44; 1.1; -1,1; -0.44];
sprintf('Graph %2d.png',x(i)*100)
end
When I use x(3) =1.1 sprintf('Graph %2d.png',x*100) gets displayed as " Graph 1.100000e+02 ". The same problem does not occur with sprintf('Graph %2d.png',110). If x = 0.44 is also works fine. How can I force MatLab to display integers for every number?
Thanks for your help!!
0 Kommentare
Akzeptierte Antwort
the cyclist
am 10 Jun. 2014
Due to the limits of floating point arithmetic, 1.1*100 is not precisely represented as 110.
You could try
round(x(i)*100)
3 Kommentare
Sean de Wolski
am 10 Jun. 2014
I recommend using the '%04i' syntax which will maintain alphabetical order:
sprintf('%03i',6)
Stephen23
am 3 Mär. 2015
Actually sprintf already preforms a round operation internally, so adding an explicit round is unnecessary and just slows it down. If you want to guarantee that the output does not use exponent notation, then %.0f format is best:
>> sprintf('%03.0f',456.9)
ans = 457
Note the rounding!
Weitere Antworten (1)
Devaraja Lakshmanappa
am 3 Mär. 2015
I had used mprintf function in my program,but i am getting error saying this function is not there in matlab7.0.2.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!