Арифметика дает неожиданное значение в ruby

#ruby #math

#ruby #математика

Вопрос:

Почему это:

 ((256-438)^2) ((227-298)^2)
  

Сообщаете мне, -253 когда это должно быть 38165 вместо этого?

Комментарии:

1. Где вы это вычисляете??

Ответ №1:

^ является ли побитовый исключающий оператор OR (XOR)

** является ли оператор экспоненты, использующим:

 ((256-438)**2) ((227-298)**2)
  

Ответ №2:

Потому что ^ это оператор для XOR, а не экспоненты. Попробуйте ** вместо этого.

Ответ №3:

 Try ((256-438)**2) ((227-298)**2)
  

Ответ №4:

^ является ли побитовым оператором XOR, согласно http://phrogz.net/programmingruby/language.html . Не оператор «power of».

Ответ №5:

^ это оператор XOR, а не возведение в степень.

Ответ №6:

Использовать ** не ^

Код должен быть — ((256-438)**2) ((227-298)**2)

** является возведением в степень или оператором ‘power of’.

Оператор возведения в степень

Возводит number в степень second number , которая может быть отрицательной или дробной.

2 ** 3 #=> 8

2 ** -1 #=> (1/2)

2 ** 0.5 #=> 1.4142135623731

^ является побитовым оператором XOR.

Оператор XOR

Оператор XOR реализует исключающее ИЛИ, что означает, что он установит бит в 1 на выходе, если только один из соответствующих битов на входе установлен в 1:

(a = 18).to_s(2) #=> "10010"

(b = 20).to_s(2) #=> "10100"

(a ^ b).to_s(2) #=> "110" (начальные нули опущены)