Why does Ruby `**` operator have higher precedence than unary `-`?
问题 This leads to the situation like: -1 ** 0.5 #=> -1 Only parenthesis remedies it: (-1) ** 0.5 #=> 6.123031769111886e-17+1.0i which is less favorable then expected 1.i , but basically acceptable. Before I go to Ruby bugs to complain, I would like to know whether there is perhaps some reason for this to be so? 回答1: Many languages define their operator precedence tables by modeling after mathematics' order of operations. In math, exponentiation does have higher precedence than multiplication, and