以 `0` 开头的数字文字 [重复]
Posted
技术标签:
【中文标题】以 `0` 开头的数字文字 [重复]【英文标题】:Numeric literals prepended with `0` [duplicate] 【发布时间】:2012-12-06 12:51:15 【问题描述】:使用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】:如果数字前面有零,ruby 将其视为八进制数(以 8 为底)
你也可以用二进制/十六进制做类似的事情
0x20 => 32 (hexadecimal)
020 => 16 (octal)
0b10 => 2 (binary)
080 => Invalid octal digit
【讨论】:
我对 Ruby 不了解。太糟糕了!020
应该是 20
。我进一步阅读,显然这是跨语言的标准。
我明白为什么它可能有点违反直觉,但是八进制语法使使用八进制数变得容易。这也不应该是一个真正的问题,因为“020”.to_i 会给你 20。所以你可以定义它的唯一地方是在你的源代码中,无论如何你不应该在你的数字前面有多余的 0 :)
我看到了好处。我认为这不值得。以上是关于以 `0` 开头的数字文字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章