IEEE-754浮点标准说:
四种相互排斥的关系是可能的:小于,等于,大于和无序.当至少一个操作数是NaN时,出现最后一种情况.每个NaN都应该将无序与包括其自身在内的所有东西进行比较.
然而(这里的键盘):
<?php
echo phpversion() . " " . zend_version() . " " . php_uname() . "\n";
// 5.2.5 2.2.0 Linux 2cf38fbc9b9e 3.11.0-15-generic #25-Ubuntu SMP
// Thu Jan 30 17:22:01 UTC 2014 x86_64
NAN < NAN; // true
NAN > NAN; // true
INF < INF; // true
INF > INF; // true
Run Code Online (Sandbox Code Playgroud)
很明显,NAN和NAN之间以及INF和INF之间存在多个关系,而应该只有一个.在使用IEEE-754浮点数的许多(大多数?全部?)语言中,"无序"意味着它NaN < NaN是错误的,并且NaN > NaN是错误的,并且NaN == NaN是错误的.这是否证明PHP不使用IEEE-754浮点数?
我正在编写一个Rails 3.1引擎并使用RSpec 2进行测试.当我使用时rails generate,我会自动为我生成spec文件,这非常方便:
$ rails g model Foo
invoke active_record
create db/migrate/20111102042931_create_myengine_foos.rb
create app/models/myengine/foo.rb
invoke rspec
create spec/models/myengine/foo_spec.rb
Run Code Online (Sandbox Code Playgroud)
但是,为了使生成的规范与我的隔离命名空间很好地配合,我必须每次在模块中手动包装规范:
require 'spec_helper'
module MyEngine
describe Foo do
it "should be round"
...
end
end
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有一种干净简单的方法来修改自动生成的规范'模板',这样我就不必在Module MyEngine每次生成新模型或控制器时都包含规范.