前缀为“0”的数字文字

时间:2012-12-19 07:56:27

标签: ruby number-literal

使用insert,我将值推送到Array

myarray=[22,33,44]
myarray.insert(0,02)
# => [2,22,33,44]

如果执行以下操作,我会:

myarray.insert(0,020)
# => [16,2,22,33,44]

020成为16?如果我执行以下操作,我会得到:

myarray.insert(0,0200)
# => [128,16,2,22,33,44]

0200成为128?我可以知道这个的原因吗?

1 个答案:

答案 0 :(得分:8)

如果数字前面的数字为零,则ruby将其视为八进制数(基数为8)

你也可以用二进制/十六进制做类似的

0x20 => 32 (hexadecimal)
020 => 16 (octal)
0b10 => 2 (binary)
080 => Invalid octal digit