Not sure what you wanna tell here.
Can you link to the documentation to know what this magic 0.9 means?

In general: floats can always be slightly off the actual value they should have because of rounding errors (and the fact that you cannot store an infinite number of digits after the floating-point-separator). â€śAlwaysâ€ť is not quiet true. It actually can happen when some math operations are done with it. if you say float myFloat = 0.9f; it will be that value. but you cannot be sure whatâ€™s the result of float myFloat = 90000f / 100000f;. It will be very close to 0.9 but maybe not exactly that value because of rounding errors.

You know how some simple fractions give infinite repeating decimals, like 1/3 = 0.3333333â€¦? In binary, 9/10 is an infinite repeating decimal, and therefore cannot be represented exactly.

So when you set a float variable equal to the literal value â€ś0.9fâ€ť it doesnâ€™t get the actual value 0.9, it rounds that to the closest value that it can store.

But general rule of thumb: never check if two floats are exactly equal. Check for approximate equality instead. (Unity has a function for this.)

The problem here is that AsyncOperation.progress is made by drunk monkeys, and uses 0.9f as a magic number. Hereâ€™s the docs, note that they use >= .9f in the example.