The problem is not the output (floatToStr). It might be ok that local settings of the server is used to format floating point values.
The problem is in the input, as macro does not use typed variables:
Suppose if you save in a #var the time: 40142,12345 with {.set|#t1|%now%.}
Then you want to calculate a time t2 32 hours or 1,5 days later.
In some systems you then should write: {.set|#t2|{.add|#t1|1,5.}.} and in another {.set|#t2|{.add|#t1|1.5.}.}
So it seems to me, the only solution is to make a full check if a varible is a number:
If first caracter is a digit, repeat for each of the following caracters if its a digit or a decimal separator ,(comma) OR .(point).
If a decimal separator is found, set decimal POINT and a flag and continue until a non digit value or end of string is found.
So: 1,234 -> 1.234
1.234,547 -> 1.234
1,23 GB -> 1.23
Then calculations are done and the result can be output as now, using local settings.