加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:55:07 所属栏目:PHP教程 来源:网络整理
导读:IEEE-754浮点标准说: Four mutually exclusive relations are possible: less than,equal,greater than,and unordered. The last case arises when at least one operand is NaN. Every NaN shall compare unordered with everything,including itself. 然
IEEE-754浮点标准说:

Four mutually exclusive relations are possible: less than,equal,greater than,and unordered. The last case arises when at least one operand is NaN. Every NaN shall compare unordered with everything,including itself.

然而(codepad here):

<?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比较的行为.

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

根据PHP语言参考Floating point numbers“虽然它取决于系统,但PHP通常使用IEEE 754双精度格式……”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读