That's certainly an interesting excercise @CM630 but for my current project use somewhat irrelevant

- I'll never have Negative numbers - or even zero come to that.
My project is Triangle Solution so if there is ever a Zero or Negative something has gone dramatically wrong !
Reporting back on @WP's suggestion (with appropriate mods) I now do have a working solution but there is a small issue that it seems appropriate to make known in case this discusion rears it's head in future. The variable 'DECS' in the statement :
Result := StringReplace(Format('%.*g', [Decs, x]), FormatSettings.DecimalSeparator, '·', []);
is NOT the number of Decimal Places (well, it isn't in my use case) - it turns out to be the total number of digits in the number. ie. Given x = 51.56432123 and Decs = 5 it returns 51.564 - - - to get 51.56432 I need to set Decs to 7. Similarly, given x=123.456789123, with Decs = 5 it returns 123.45; With Decs = 8, I get 123.45678.
A simple enough solution is to determine the number of digits in the argument by using :
I := trunc(Log10(x)+1); Decs = Deci (my variable for DP) +I
so I call the StringReplace with x and Deci+I.
I'm not dealing with esoteric Reflex Triangles so the figures are never going to be outside the range .00001 (say) to 179.99999 - though that would depend to some extent upon what I set the DP to.