I have no experience with this. Normally, for simple integers, you take the first digit, add it to the result, then, if more digits, you shift the result by 10, and keep adding.

Once you reach the decimal point, you could "simply" invert the remainder of the string (up to the exponent) and do the same thing, shiftin downwards.

So for 123.456.

Start with 0, add 1, result 1

Multiply by 10 and add 2, result 12

Multiply by 10 an add 3, result 123.

Detect ".".

Scan to the end (i.e. 6) and run backward.

Interim result = 6.

Divide by 10, add 5, result 5.6

Divide by 10, add 4, result 4.56

Divide by 10, add interim result to main result: 123.456.

Once you hit the exponent, you use that to shift the exponent of the current result.

No doubt there are problems with this as there are with all things floating point.