First off, you should never use equality comparison on floats since they can't be guaranteed to be stored without loss of precision, and such errors can be very hard to track down.
Also, you have gaps in your comparisons. For example, what happens if a total grade becomes 89.99991?
As such, you'd be better off with
if ($total >= 90 && $total <= 100) {
}
# here everything up to exactly 90 (exclusive) is included, and since the integer 90 can be
# stored without loss of precision, this comparison is safe
elseif ($total >= 80 && $total < 90)
Then you have a huge gap between the last two comparisons, i.e. when $total is between 50 and 60.
Next up, you have an error in the last comparison, and I'd recommend restructuring your comparisons on the form LOW_NUM < $var && $var < HIGH_NUM so that it's easier to see that $var should be between the low and high bounding numbers
# suddenly it becomes clear that something isn't right here
if (50 <= $total && 0 <= $total)
# should be
if (0 <= $total && $total < 50)
# and taking the previous comment about the gap between 50 and 60 into account
if (0 <= $total && $total < 60)
Also, you could write less code if you structure your conditionals from lowest to highest
if ($total < 60) {
# F
}
elseif ($total < 70) {
# D
}
// ...
elseif ($total >= 90) {
# A
}