zeros before a string using num2str

91 Ansichten (letzte 30 Tage)
fdb
fdb am 19 Okt. 2017
Kommentiert: JG am 13 Mai 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'

Akzeptierte Antwort

Guillaume
Guillaume am 19 Okt. 2017
Bearbeitet: Guillaume am 19 Okt. 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 Kommentare
JG
JG am 13 Mai 2021
This isn't working for me. Did this behavior change in a later version of MatLab?
JG
JG am 13 Mai 2021
It is working, the 0 before the 8 matters.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Adam
Adam am 19 Okt. 2017
b = num2str(a,'0%3.4f')
  1 Kommentar
fdb
fdb am 19 Okt. 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.

Melden Sie sich an, um zu kommentieren.


KL
KL am 19 Okt. 2017
Bearbeitet: KL am 19 Okt. 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')

Kategorien

Mehr zu Characters and Strings 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!

Translated by