Почему разница в вычислениях/кастинге между (long)z и (long)(x+y)?
Тестирую на .NET Framework 4.5.2 x86
float test1 = 1.3F,
test2 = 5.2F;
float i2_float = test1 * 100,
i3_float = test2 * 100;
long i1 = (long)i2_float;
long i2 = (long)i3_float;
Для первого варианта получаю следующие значения: i1=130, i2=520
float test1 = 1.3F,
test2 = 5.2F;
long i1 = (long)(test1 * 100);
long i2 = (long)(test2 * 100);
Для второго получаю следующие значения: i1=129, i2=519
Почему получаю разные результаты для i1/i2 если результат операций test * 100 в обеих вариантах равен float и явно кастится в long?