s/\d{1,3}(?=(\d{3})+(?!\d))/$&,/g

The amount of code that goes in to formatting numbers can be silly sometimes, especially when you realise it can be done as a regex.

Note that if the number has a DP longer than 2, it'll format it - I suggest splitting out the DP first, and bash them back together.

(via)