如何在Ruby中提取整数的符号?

我需要一个函数来返回/打印整数上的符号。 到目前为止,我想出了这个:

def extract_sign(integer) integer >= 0 ? '+' : '-' end 

是否有内置的Ruby方法可以做到这一点?

这是一个简单的方法:

 x = -3 "++-"[x <=> 0] # => "-" x = 0 "++-"[x <=> 0] # => "+" x = 3 "++-"[x <=> 0] # => "+" 

要么

 x = -3 "±+-"[x <=> 0] # => "-" x = 0 "±+-"[x <=> 0] # => "±" x = 3 "±+-"[x <=> 0] # => "+" 

我认为没有一个只给出-1或+1的方法是无稽之谈。 甚至BASIC也具有SGN(n)这样的function。 当我们想要使用的数字时,为什么我们必须处理字符串。 但那只是MHO。

 def sgn(n) n <=> 0 end. 

您可以使用Kernel#sprintf格式化数字:

 def sign(i) sprintf("%+d", i)[0] end sign(100) #=> "+" sign(-100) #=> "-" 
 class Numeric def sign if self > 0 '+' elsif zero? nil else '-' end end end 

Ruby没有像Javascript这样的内置符号function。 这是一个解释更多http://www.ruby-forum.com/topic/141216的主题

你的方法看起来正确。

我用n == 0 ? 1 : n.abs / n n == 0 ? 1 : n.abs / n ,例如:

 def sign(n) n == 0 ? 1 : n.abs / n end sign(10) # 1 sign(0) # 1 sign(-5) # -1