Your big next step is getting PID working. Since you can read the motor speed in rotation/s, you can get the motor position by doing simple integration (position = currentSpeed*timeStep + position) and that should be reasonably accurate.
If you don't want to put any other sensors on board, then your steering accuracy is going to depend on how well you calibrate: for a given change in position of both tracks (when they are moving in opposite directions), what is the angle you get? Then you just make sure to move the tracks to the positions that correspond to a 90 degree turn.
If you put a gyroscope on board, you will be able to do better, as long as you don't turn forever :-P Gyros have the unfortunate property that they "wind up": if you leave them running and keep integrating, your robot will tell you that it's constantly spinning very slowly. But for short maneuvers like turning, it's not a big deal.
Regardless of which sensors you use, you're going to have to use PID if you want this to work reasonably well. Doing it with floats or ints doesn't matter. I'd do it with floats. Your microcontroller can definitely handle a few PIDs working in floats (unless you're not using one?) and if your PWM signal has to be an integer, just cast it to an int: all that'll happen is you lose the decimal point. But if PWM is in the range of 0 to 100, for example, all you're losing is less than 1% accuracy, which your sensors won't give you anyway.
Since you can sense speed, a good first step would be to do a motor speed controller using PID. This way, you aren't relying on your calibration. Get that going, and you're set. If I were you, I'd just use PD. I never did trust the integrators :-P But that's a personal preference, and the integrator does do something.