Using any floats in your program will make your sketch quite a bit bigger and also they run very very slowly, so I would avoid them if possible. You can translate voltages to analog readings roughly by multiplying your voltage by 204.8, so 0.4v would be about 81, while 3v would be about 614.4
As for the corruption under the messages after a while, you need to call DigiUSB.refresh some more times - the buffer is overflowing eventually. I'm going to add a patch to DigiUSB to add a DigiUSB.delay function which refreshes while it delays, and actually works for delaying!!! Hopefully we can have that in the next release of Digispark Arduino software. I'll try and think of a good way to have it automatically replace the normal delay() function too, whenever you include the library.