首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP实际使用IEEE-754浮点数吗?

PHP实际使用IEEE-754浮点数吗?
EN

Stack Overflow用户
提问于 2014-05-28 02:05:54
回答 1查看 1.4K关注 0票数 8

IEEE-754浮点标准规定:

四种相互排斥的关系是可能的:小于,平等,大于和无序。最后一种情况是在至少一个操作数是NaN时出现的。每个NaN都应该将无序与包括自身在内的所有事物进行比较。

然而(代码页):

代码语言:javascript
复制
<?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浮点数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 02:23:53

将两种想法分开是有用的:

  1. 浮点数格式
  2. 关于数字行为的语言规则。

语言标准机构可以根据自己认为合适的方式来指定或保留IEEE浮点行为的数量或数量。您无法从NaN比较的行为中判断是否使用IEEE浮点格式。

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

根据浮点数,“虽然它依赖于系统,但是PHP通常使用IEEE754双精度格式.”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23901740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档