Есть странное поведение, которое я не могу понять. Согласовано, что число точек с плавающей точкой является приближением, поэтому даже операции, которые, очевидно, возвращают число без десятичных чисел, могут быть приближены к чему-то с десятичными знаками.
Я делаю это:
int num = (int)(195.95F * 100);
и поскольку это операция с плавающей запятой, я получаю 19594 вместо 19595 года.. но это правильно.
Меня озадачивает то, что если я делаю
float flo = 195.95F * 100;
int num = (int) flo;
Я получаю правильный результат 19595 года.
Любая идея, почему это происходит?