Почему YAML.load возвращает неправильное числовое значение? - PullRequest
3 голосов
/ 08 марта 2011

Почему 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 ]

7 голосов
/ 08 марта 2011

Парсер YAML обрабатывает «014213245611111» как восьмеричное (base-8) число, а не строку. Оберните его в кавычки, чтобы сохранить ведущие 0.

3 голосов
/ 08 марта 2011

Ведущий 0 означает восьмеричное число - восьмеричное 14213245611111 == 843333440073.Если вам нужны начальные нули, вы должны использовать строковое значение вместо числового.

...