3

为什么 YAML.load 返回错误的值?

ruby-1.9.2-p0 :006 > a = YAML.load('merchant_id: 014213245611111')
 => {"merchant_id"=>843333440073} 
ruby-1.9.2-p0 :007 > a["merchant_id"]
 => 843333440073 

我在 ruby​​ 1.9.2-p0、rvm、ubuntu10.10、64 位。

4

2 回答 2

7

YAML 解析器将“014213245611111”视为八进制(base-8)数字,而不是字符串。将其用引号括起来以保留前导 0。

于 2011-03-08T08:15:54.850 回答
3

前导 0 表示八进制数 - 14213245611111 八进制 == 843333440073 十进制。如果需要前导零,则应使用字符串值而不是数字。

于 2011-03-08T08:16:28.293 回答