For your starting post:
Add the following somewhere near the start of the code...
That will get rid of the trailing zeros. The default precision is 3 (so this is used if you don't stipulate a precision), that's why you got them. Note that precision only affects how numbers are displayed, not the actual value.
For your 2nd post:
My understanding is that converting numbers to strings doesn't write it out in words. It presents it in some computer language (an "8-character string"), as shown in your image.
To convert a string to numeric values use val(a$). It doesn't convert words to numbers but it can evaluate symbols, like foot and inches (' and ") and those for degree-minute-second (eg 1D1M1S, ie, 1 degree, 1 minute, 1 second). So if your code says a$="1' "
(I put a space between the foot symbol and the ending quotes, for clarity) then val(a$) equals 1 if using foot based units, 12 if using inch based units, 30.480 if using cm based units (and the default precision of 3 - note that when converting string to values the current precision can affect the actual value), etc. (use sys(1100) to set the current drawing units in a macro [0 = unitless, 1 = inches, 2 = feet, 3 = miles, 4 = mm, 5 = cm, 6 = m, 7 = km]).
To convert a number back into a sting just assign it (eg, a$=a <<note that a would have been assigned a numeric value earlier in the code>>). This would not convert the number into words but would make the number usable in text strings, as opposed to usable in calculations.