Ruby on rails Ruby中带前导零的类型转换

Ruby on rails Ruby中带前导零的类型转换,ruby-on-rails,ruby,Ruby On Rails,Ruby,将带前导零的数字转换为整数类型会产生不理想的结果。不能找出原因吗?。请建议删除初始零,因为它是为了表示八进制数 1.9.3-p551 :016 > 00232.to_i => 154 1.9.3-p551 :017 > 0023.to_i => 19 1.9.3-p551 :024 > 23.to_i => 23 其他人也是如此 > 00232.to_i => 154 # (2 * (8**0)) + (3 * (8**1)) + (

将带前导零的数字转换为整数类型会产生不理想的结果。不能找出原因吗?。请建议

删除初始零,因为它是为了表示八进制数

1.9.3-p551 :016 > 00232.to_i
=> 154 
1.9.3-p551 :017 > 0023.to_i
=> 19 
1.9.3-p551 :024 > 23.to_i
=> 23
其他人也是如此

> 00232.to_i
=> 154     # (2 * (8**0)) + (3 * (8**1)) + (2 * (8**2)) + (0 * (8**3))
           # 2 + 24 + 128
           # => 154

删除初始零,因为它是用于八进制数的表示目的

1.9.3-p551 :016 > 00232.to_i
=> 154 
1.9.3-p551 :017 > 0023.to_i
=> 19 
1.9.3-p551 :024 > 23.to_i
=> 23
其他人也是如此

> 00232.to_i
=> 154     # (2 * (8**0)) + (3 * (8**1)) + (2 * (8**2)) + (0 * (8**3))
           # 2 + 24 + 128
           # => 154

如果该数字有前导零,Ruby将其视为八进制(以8为基数)数字

要获得等效的十进制数,请先将其转换为字符串,然后再将其转换为整数

> 0023.to_i
=> 19      # (3 * (8**0)) + (2 * (8**1)) + (0 * (8**2))
           # 3 + 16 + 0
           # => 19

如果该数字有前导零,Ruby将其视为八进制(以8为基数)数字

要获得等效的十进制数,请先将其转换为字符串,然后再将其转换为整数

> 0023.to_i
=> 19      # (3 * (8**0)) + (2 * (8**1)) + (0 * (8**2))
           # 3 + 16 + 0
           # => 19

以“0”开头的数字被视为八进制。它与转换无关–
00232
(不含
到i
)已生成
154
。以“0”开头的数字被视为八进制。它与转换无关——
00232
(不含
to_i
)已生成
154
。或者将其转换为字符串并添加基数:$>“0023”。to_i(10)#23$>“0023.to_i(8)#8或者将其转换为字符串并添加基数:$>“0023”。to_i(10)#23$>“0023.to#i(8)#