2011-03-08 66 views
3

为什么YAML.load返回错误的值?为什么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 

我在红宝石1.9.2-p0,rvm,ubuntu10.10,64位。

回答

7

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

+1

隐式类型的完整列表:http://www.yaml.org/type/ – Andrey 2011-03-08 14:28:07

3

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

相关问题