In addition to the x86 and x64, the .NET version
seems to be important.
Comparing floating point numbers for equality has always
been discouraged, and there are many references which
explain why and how to correctly handle such
requirements.
https://floating-point-gui.de/errors/comparison/
https://stackoverflow.com/questions/4915462/how-should-i-do-floating-point-comparison
Single.Equals Method
https://learn.microsoft.com/en-us/dotnet/api/system.single.equals?view=net-6.0
"The Equals method should be used with caution,
because two apparently equivalent values can be
unequal due to the differing precision of the
two values. The following example reports that
the Single value .3333 and the Single returned
by dividing 1 by 3 are unequal."
...
"Rather than comparing for equality, one recommended
technique involves defining an acceptable margin of
difference between two values (such as .01% of one
of the values). If the absolute value of the
difference between the two values is less than
or equal to that margin, the difference is likely
to be due to differences in precision and, therefore,
the values are likely to be equal. The following
example uses this technique to compare .33333 and 1/3,
the two Single values that the previous code example
found to be unequal."
...
"The precision of floating-point numbers beyond the
documented precision is specific to the implementation
and version of the .NET Framework. Consequently, a
comparison of two particular numbers might change between
versions of the .NET Framework because the precision of
the numbers' internal representation might change."
- Wayne