对于相同的 ruby 版本,相同的 YAML 解析器引擎 Psych(但不同的次要版本),但不同的操作系统(Mac 与 Linux),文本在 Mac 上"2e8"
被视为,但在 Linux 上被视为( )。为什么?我该如何解决它,以便他们表现出相同的行为?String
Float
200000000.0
对于 Mac:达尔文 12.4.0 达尔文内核版本 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 上生成的转储的一部分,它没有放置这些引号。