orderby=meta_value_num creates duplicate posts

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…