Getting frustrated how stop watch timers look when using non-monospaced fonts, especially when swapping between characters 1 and 8? TextMeshPro has special tags you can enclose between characters to give equal spacing to encapsulated characters.
The following is my personal helper solution to converting a time as a float, into a monospaced formatted string to a TextMeshProUGUI.text
The above uses C# library TimeSpan to convert the float into a heavily customisable time format. For this example this converts a simple float (e.g 62.3) into 1:02.300. I also add a leading '0' on seconds for aesthetic reasons.
I open the tags around the parts of the formatted string I want to be monospaced, in this case it's the numbers only. The ':' and '.' part I want to remain the same allocated space, as not give too much space around those characters.
Documentation
To explore more on these topics, check out the documentation: