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

时间:2011-03-08 08:10:20

标签: ruby yaml ruby-1.9 ruby-1.9.2

为什么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,64bit。

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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