ruby中数字和字符串的比较

Jer*_*ome 0 ruby ruby-on-rails-3

在控制台中:

1.9.3p547 :010 > my_s = 00013.to_s
 => "11"
1.9.3p547 :011 > my_s = 00013.to_i
 => 11
1.9.3p547 :012 > 13.to_s
 => "13"
1.9.3p547 :013 > 13.to_i
 => 13
Run Code Online (Sandbox Code Playgroud)

为什么这种治疗方法不同?如何在基本数字但用零填充的字符串值之间进行比较?

Dav*_*son 6

你写了00013,带有前导零.在Ruby(以及许多其他语言)中,以零开头的整数文字被视为八进制(基数为8),因此您键入的数字(以十进制表示)实际上是8 + 3 = 11.

回答问题的第二部分:如果你有一个类似的字符串'00013',你可以调用#to_i它,Ruby实际上将它转换为13(十进制).所以这应该允许你进行比较.