Just finished my platformer physics for my game. Thought I could help.
Not sure if the above way is most effective.
What I have is this:
Onground Boolean - onGround
Terminal velocity - tv
Jump power - jmp
Velocity vector (added to the position) - vel
vel.y = 0;
onGround = (vel.y == 0);
onGround = false;
if(vel.y < tv)
vel.y = jmp;
Okay, this code is not copied from mine so it may have a mistake, but you should find any possible mistake quickly.
There are some things that need to be polished with this, but do that according to your game.