小编tom*_*ski的帖子

PHP实际上是否使用IEEE-754浮点数?

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浮点数?

php floating-point ieee-754

7
推荐指数
1
解决办法
816
查看次数

在Rails 3中自定义Rspec生成器

我正在编写一个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每次生成新模型或控制器时都包含规范.

rspec ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
823
查看次数