The code below runs modulus 0.01 on the numbers 0.01, 0.02, 0.03, ... , 0.99
var testVals = Enumerable.Range(1, 99).Select(n => double.Parse("0." + n.ToString("D2")));
var moduloTest = testVals.Select(v => v % 0.01).ToList();
(note: parsing doubles from string is intentional, that way the only math operation made on the floats is the modulus)
I would expect the moduleTest list here to contain several floating point values that are very close to 0. However many of the values in the list are instead very close to 0.1.
I understand that floating point math is not exact, and introduces rounding errors but 0.1 here is not even close to 0.