I'm trying to nail down this function properly, but it seems Floor is not giving me the answer that I expect.
BTW, the title might be misleading, because I specifically am not working with string content, so avoid the usual "why don't you use Mid$ and Str$" and so forth.
For i# = -125.0 To 125.0 Step 15.75 ln = term_write_FLOAT(i) : Print " length of string :"+ln Next WaitKey() Function term_write_FLOAT%(num_in#) Local num_out% Local ln% = 0 Local num_send_subsequent% = False If num_in < 0 Then num_in = Abs(num_in) : term_write(45) : ln = ln + 1 num_out% = Floor (num_in * 0.000000001) Mod 10 : If num_out > 0 Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 1000000000 num_out% = Floor (num_in * 0.00000001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 100000000 num_out% = Floor (num_in * 0.0000001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 10000000 num_out% = Floor (num_in * 0.000001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 1000000 num_out% = Floor (num_in * 0.00001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 100000 num_out% = Floor (num_in * 0.0001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 10000 num_out% = Floor (num_in * 0.001 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 1000 num_out% = Floor (num_in * 0.01 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 100 num_out% = Floor (num_in * 0.1 ) Mod 10 : If num_out > 0 Or num_send_subsequent = True Then term_write(num_out + 48) : num_send_subsequent% = True : ln = ln + 1 : num_in = num_in - num_out * 10 num_out% = Floor (num_in ) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out term_write(46) : ln = ln + 1 ; insert "." num_out% = Floor (num_in * 10.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.1 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 100.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.01 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 1000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.001 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 10000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.0001 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 100000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.00001 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 1000000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.000001 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 10000000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : num_in = num_in - num_out * 0.0000001 : If num_in = 0 Then Return ln num_out% = Floor (num_in * 100000000.0) Mod 10 : term_write(num_out + 48) : ln = ln + 1 : Return ln End Function Function term_write(char%) ; this is just a place holder function, not the actual Write Chr$(char) End Function
BTW, the title might be misleading, because I specifically am not working with string content, so avoid the usual "why don't you use Mid$ and Str$" and so forth.