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

很显然,NAN和NAN(以及INF和INF之间)之间存在不止一个关系,当只有一个关系时。 在IEEE-754浮点“无序”的许多(大多数?)?语言中,意味着NaN < NaN为假,且NaN > NaN为假,并且NaN == NaN为假。 这是否证明PHP不使用IEEE-754浮点数?


分离两个想法是有用的:

  • 浮点数格式
  • 数字如何表现的语言规则。
  • 语言标准机构可以指定或不指定IEEE标准浮点行为,或者不考虑他们认为合适的IEEE浮点行为。 NaN比较如何表现无论是否使用IEEE浮点格式,您都无法判断。

    例如,Java指定float和double的行为,如果不使用IEEE 754 32位和64位二进制格式,实现起来会非常困难。 另一方面,Float和Double都有比较方法,认为NaN与自身相等并且大于所有其他浮点数。

    根据PHP语言参考浮点数“虽然依赖于系统,但PHP通常使用IEEE 754双精度格式......”

    链接地址: http://www.djcxy.com/p/20763.html

    上一篇: 754 floating point numbers?

    下一篇: Javascript Native Language Text