The RFC for TryFrom was 1542. The topic was discussed here: GitHub. Casts involving floats were ultimately dropped including TryFrom for f64 -> f32. In my naive take, I suspect it has to do with a lack of a clear line for when to throw an error and method for rounding down to the f32 value in a canonical way.
I base this loosely on the authors’ referencing also not having f32 -> i32 because of a loss of precision.
For u64 -> u32 it’s clear when it makes sense to throw an error. Before the error needs to be thrown the values are semantically identical. That can’t be said for floats. The extra precision in a f64 vs a f32 actually means something - always. So, when do you throw an error, and how do you treat the loss of precision? There are ways, but none that are canonical.