Вы выбрали интересный способ приблизиться к вычислениям.
Я полагаю, вы пытаетесь опустить нули в своем выражении 1.-2.-7.-2
, которое вернет -10
, если вы напишите его как 1.0 - 2.0 - 7.0 - 2
.
То, как вы получаете 4
, заключается в том, что конструкция 1.-
вызывает метод -()
, потому что все является объектом в Ruby, а затем вы передаете аргумент функции.
В вашем случае это будет проанализировано как
1.-( 2.-( 7.-(2) ) )
# if we try to unwrap
a = 7.-(2) # => 5
b = 2.-(a) # => -3
1.-(-3) # (or 1 + 3) => 4