同じ ruby バージョン、同じ YAML パーサー エンジン Psych (ただしマイナー バージョンが異なる)、異なる OS (Mac と Linux) の場合、テキストはMac では"2e8"
扱われますが、Linux では( ) として扱われます。なんで?同じ動作を示すように修正するにはどうすればよいですか?String
Float
200000000.0
Mac の場合: Darwin 12.4.0 Darwin Kernel バージョン 12.4.0: root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64
require "yaml" RUBY_VERSION # => "1.9.3" YAML::ENGINE.yamler # => "psych" Psych::VERSION # => "1.2.2" Psych.load("2e8") # => "2e8" YAML.load("2e8") # => "2e8" YAML.load("'2e8'") # => "2e8"
Linux の場合: Linux 2.6.18-238.el5 #1 SMP x86_64 GNU/Linux
require "yaml" RUBY_VERSION # => "1.9.3" YAML::ENGINE.yamler # => "psych" Psych::VERSION # => "1.2.1" Psych.load("2e8") # => 200000000.0 YAML.load("2e8") # => 200000000.0 YAML.load("'2e8'") # => "2e8"
引用符を追加して'2e8'
も同じ動作になることはわかっていますが、このテキストは Mac で生成されたダンプの一部であり、これらの引用符は配置されません。