The FitFile.protocol_version, profile_version are just strings "major.minor" (i.e. "int dot int" format), not floats. Floats are inaccurate representations.
I propose to create a custom class FitVersion with fields major, minor and __str__ func with proper formatting. And maybe magic functions for comparison (__eq__, __gt__, ...). Can make a PR for that.