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)#