2011-03-08 49 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十進制。如果你需要有前導零,你應該使用字符串值而不是數字。

相關問題