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