算术在ruby中给出了意想不到的值

时间:2011-05-06 02:02:02

标签: ruby math

为什么:

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

给我-253什么时候应该38165呢?

6 个答案:

答案 0 :(得分:15)

^是按位异或运算符(XOR)

**是指数运算符,使用:

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

答案 1 :(得分:6)

因为^是XOR的运算符,而不是指数运算符。请改为**

答案 2 :(得分:2)

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

答案 3 :(得分:2)

根据{{​​3}},

^是按位XOR运算符。不是“权力”运营商。

答案 4 :(得分:2)

^是XOR运算符,而不是指数运算。

答案 5 :(得分:0)

使用**而不是^

代码应为 - ((256-438)**2)+((227-298)**2)

**是指数或“权力”运算符。

  

Exponentiation运算符

     

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"(省略前导零)