zeros before a string using num2str

53 views (last 30 days)
fdb
fdb on 19 Oct 2017
Commented: JG on 13 May 2021
I would like to pad zeros before a string. I have the following code:
a1 = 12.1521;
a2 = 2.1521;
b1 = num2str(a1,'%03.4f');
b2 = num2str(a2,'%03.4f');
The result is b1 = '12.1521';
The result is b2 = '2.1521';
I would like to obtain the result b1 = '012.1521' and b2 = '002.1521'

Accepted Answer

Guillaume
Guillaume on 19 Oct 2017
Edited: Guillaume on 19 Oct 2017
The problem with your format string is not the %0 which would work fine, had the next number been correct. The 3 is the problem. In both %3.4f and %03.4f it is ignored as the value is too small. It should always be more than the value after the . since it specifies the minimum total number of characters to print.
Try
num2str(a1, '%08.4f') %8 since you want 4 digits after the . + 1 digit for the . + 3 digit s before
  2 Comments
JG
JG on 13 May 2021
This isn't working for me. Did this behavior change in a later version of MatLab?
JG
JG on 13 May 2021
It is working, the 0 before the 8 matters.

Sign in to comment.

More Answers (2)

Adam
Adam on 19 Oct 2017
b = num2str(a,'0%3.4f')
  1 Comment
fdb
fdb on 19 Oct 2017
I would like to automatically pad the number of leading zeros, depending on the formatting I specify (in this case 3 digits leading the comma, and 4 digits following the comma). It should also work if I don't know beforehand what the number a1 is.

Sign in to comment.


KL
KL on 19 Oct 2017
Edited: KL on 19 Oct 2017
Try this
A = [69.45 31.71 95.36 3.44 7.82]'
str = string(A)
newStr = pad(str,7,'left','0') %or pad(str,7,'both','0')

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!