As for the edit (leading zeroes):
/* will print "001" */
echo sprintf( "%03d", 1 );
/* will print "00097" */
echo sprintf( "%05d", 97 );
As for the inital problem:
Obviously, I believe your problem description, but if 'orderby' => 'meta_value'
does not produce duplicate results, neither should a change to 'orderby' => 'meta_value_num'
.
If that’s the only alteration you make, it should only change order…