Просто краткое объяснение того, что идет не так в вашем примере.
interim_result является правильным 256. и это происходит:
256 / 1024 #-> 0
/ с двумя фикснумами (целое число) является своего рода модулемразделение.Чтобы показать это: вы получаете первое значение:
256.divmod(1024)#-> [0, 256]
256.divmod(1024).first #-> 0
Некоторые решения (я изменил ваши входные значения. Ваши 256/1028 не 0,25, а 24,9 ..... См. Ответ Codeglots):
256 / 1024.0 #-> 0.25
Возможно, Rational - еще одно приятное решение:
256 / Rational(1024,1) #-> (1/4)
256 * Rational(1,1024) #-> (1/4)