As far as the compiler is concerned, floor returns a double, so by assigning it to a long you are losing the decimal part of the value. In this case it doesn't actually matter because that is what you actually want. You need to tell the compiler that you know this is going to happen and you don't care. To do this, you put an explicit cast in.
Edit - as Greg and Henry pointed out, there is a better way to do this. You should use that and just look on this post as an explanation of the compiler error.
Sorry, I posted, then realized the when you said you got "possible loss of precision", you actually meant that was a compiler warning. I tried to quickly amend my response, only to find there had been a flurry of activity around it.
If it's not clear already, just do away with the Math.floor() call. You don't need it. As Joanne pointed out, the "loss" that the compiler complains about is converting a double returned by Math.floor() to a long (integer) without a cast. However, you have no reason to stray into the world of floating point arithmetic at all. Your integer division minute / 60 in math may yield a number with fractions, but in the computer will yield an integer with the fractional part throw away. Sorry for the confusion!