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
将带前导零的数字转换为整数类型会产生不良结果。无法弄清楚原因?请指教
答案 0 :(得分:3)
删除初始零,因为它是八进制数中的代表性目的。
> 00232.to_i
=> 154 # (2 * (8**0)) + (3 * (8**1)) + (2 * (8**2)) + (0 * (8**3))
# 2 + 24 + 128
# => 154
与其他人相似。
> 0023.to_i
=> 19 # (3 * (8**0)) + (2 * (8**1)) + (0 * (8**2))
# 3 + 16 + 0
# => 19
答案 1 :(得分:0)
Ruby将数字视为八进制(基数为8),如果它具有前导零。
要获得等效的十进制数,请在将其转换为整数之前将其转换为字符串。
023.to_s(8).to_i
=> 23