zeros before a string using num2str

84 vues (au cours des 30 derniers jours)
fdb
fdb le 19 Oct 2017
Commenté : JG le 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'

Réponse acceptée

Guillaume
Guillaume le 19 Oct 2017
Modifié(e) : Guillaume le 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 commentaires
JG
JG le 13 Mai 2021
This isn't working for me. Did this behavior change in a later version of MatLab?
JG
JG le 13 Mai 2021
It is working, the 0 before the 8 matters.

Connectez-vous pour commenter.

Plus de réponses (2)

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

Connectez-vous pour commenter.


KL
KL le 19 Oct 2017
Modifié(e) : KL le 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')

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by