zeros before a string using num2str

57 visualizaciones (últimos 30 días)
fdb
fdb el 19 de Oct. de 2017
Comentada: JG el 13 de Mayo de 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'

Respuesta aceptada

Guillaume
Guillaume el 19 de Oct. de 2017
Editada: Guillaume el 19 de Oct. de 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 comentarios
JG
JG el 13 de Mayo de 2021
This isn't working for me. Did this behavior change in a later version of MatLab?
JG
JG el 13 de Mayo de 2021
It is working, the 0 before the 8 matters.

Iniciar sesión para comentar.

Más respuestas (2)

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

Iniciar sesión para comentar.


KL
KL el 19 de Oct. de 2017
Editada: KL el 19 de Oct. de 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')

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by