I think you will need to fill this char to have always the same number of chars. You could try with a space as prefix or suffix and if this don't worked then the 0 - this should be possible with num and maybe with such a formatting:
An alternatively would be to use a dual-expressions like this:
dual(if(YourExpression < 0.1, '0' & YourExpression, YourExpression)
I figured there wasn't a way to set the internal margins; appreciate you confirming this for me. I think I'll use a if statement to set the number of places after the decimal depending on the magnitude of the number...this should keep the same number of characters each time. I'm guessing it'll look something like this:
if(ExpressionValue >= 0.1, num(ExpressionValue, '00.0%'),num(ExpressionValue, '0.00%'))
Not sure if I'll also need to change to a mono-spaced font, as a 1 may take up less space than all of the other numbers. I should probably also account for the rare instance where the gauge max is 100%.