3 votes

Pourquoi YAML.load renvoie-t-il une valeur numérique erronée ?

Pourquoi YAML.load renvoie-t-il une valeur erronée ?

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 

Je suis sur ruby 1.9.2-p0, rvm, ubuntu10.10, 64bit.

7voto

Dan Cheail Points 6410

L'analyseur YAML traite "014213245611111" comme un nombre octal (base-8), plutôt que comme une chaîne de caractères. Mettez-le entre guillemets pour préserver le 0 initial.

3voto

Chuck Points 138930

Un 0 en tête signifie un nombre octal - 14213245611111 octal = 843333440073 décimal. Si vous avez besoin de zéros en tête, vous devez utiliser une chaîne de caractères plutôt qu'une valeur numérique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X