How can I include leading zeros in a number?

910 views (last 30 days)
Brock Chelle
Brock Chelle on 6 Oct 2017
Commented: Stephen23 on 11 Jan 2024
I've created a code that requires the user to input a number of their choice. Their number must follow a set of rules, the first being that it must be 6 digits otherwise an error message occurs.
If the user types a number such as 012345, MatLab discards the zero and counts it as a 5 digit number (12345). If I would like MatLab to understand that this is actually a 6-digit number, how would i go about that?

Answers (2)

Cedric
Cedric on 6 Oct 2017
Edited: Cedric on 6 Oct 2017
Store/read the user input as a string.
Or, if you want to bring some flexibility, allow users to enter integers without leading zeros, but then when it becomes important to use/display them with leading zeros, print them on 6 digits with a 0 padding:
n = 12 ; % Stored or entered by user.
n_strPadded = sprintf( '%06d', n ) ;
with that you get:
n_strPadded =
'000012'
  4 Comments
Real User
Real User on 11 Jan 2024
Great except that it counts the minus sign as one "zero". Thus, sprintf('%06d', n) works if n>=0 but sprintf('%07d', n) if n<0. Is there any way to say that I want 6 numbers whether n<0 or not?
Stephen23
Stephen23 on 11 Jan 2024
"Is there any way to say that I want 6 numbers whether n<0 or not?"
I guess you mean digits, not numbers. Here are two approaches:
n = +4;
sprintf('%0*d',(n<0)+6,n)
ans = '000004'
n = -4;
sprintf('%0*d',(n<0)+6,n)
ans = '-000004'
OR
n = +4;
sprintf('%+07d',n)
ans = '+000004'
n = -4;
sprintf('%+07d',n)
ans = '-000004'

Sign in to comment.


Walter Roberson
Walter Roberson on 8 May 2018
Use input with the 's' option, and test for length() 6 and that it contains only digits.

Community Treasure Hunt

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

Start Hunting!