Удалось пока выяснить что при передаче числа 0,999 в строку попадает 0,099, если добавить еще одну "9" 0,9999 в строку попадает 0,0099, сравнил два файла  strnum, прикрепленный выше и скачанный раннее, было пару отличий но это никак не повлияло на результат, еще заменил в функции double на float, я так понимаю в esp он не поддерживается да и я работаю с float? но и это не дало результата, удалось добиться нормального отображения удалив в коде прибавления 0.5:
	
	
	
		
теперь не работает округление, но вывод без искажений, в чем причина пока не пойму.
								
		Код:
	
	int n = ((int)(fract*10.0+0.0))/10; 
				 
 
		