Причина в том, что 33.46639 будет представлено как нечто немного меньшее, чем это число.
Умножение на 1000000 даст вам 33466389.99999999.
Приведение типов с использованием (int) просто возвращает целочисленную часть (33466389).
Если вам нужно «правильное» число, попробуйте round () перед приведением типа.