当前位置:首页 > 日记 > 正文

你应该知道PHP浮点知识。

你应该知道PHP浮点知识。
PHP是一种弱类型语言。这样的特点必然要求无缝、透明的隐式类型转换,和PHP使用变量来存储任何类型的数值。机制的结构如下:(5.2)为例。

复制代码代码如下所示:

结构_zval_struct {

变量信息

zvalue_value值; / * * /

zend_uint引用计数;

zend_uchar型活跃型; / * * /

zend_uchar is_ref;

};
在上述结构中,实际保存价值本身是zvalue_value财团:

复制代码代码如下所示:

_zvalue_value { typedef联盟

长语句长值; / * * /

双双双值; / * * /

struct {

字符*;

Int len;

STR };

哈希表*哈希表值; / * * /

zend_object_value obj;

zvalue_value };
今天,我们只关心两个成员,语句和dval,我们应该意识到长语句与操作系统的编译器,不同长度的字的长度,它可能是32bits或64比特,双双(双精度)的IEEE 754规定是固定的,一定是64bits。

请记住这一点,PHP的一些代码的非平台独立性。Our next discussion, in addition to the particular point, assumes that long is 64bits

这里没有引用IEEE 754的浮点计数方法。你可以饶有兴趣地看到它。关键的一点是,双尾数是52位和1位的保存,有效隐藏53bits ..

在这里,它引出了一个非常有趣的问题。我们使用的C代码示例(假设长64位):

复制代码代码如下所示:

长x;

断言(a =(long)(double)a);
当A的值在什么范围内时,可以断言上面的代码(在文章的结尾)。

现在让我们回到要点上来。在执行脚本之前,PHP首先需要读取脚本并分析脚本。在这个过程中,机制也用于在脚本中,翻译字面量为例,下面的脚本:

复制代码代码如下所示:

< PHP

$ = 922337203685477580;64位的符号数最多。

$ = 922337203685477580; / + +的最大值1

var_dump(美元);

var_dump($);
输出:

复制代码代码如下所示:

Int(922337203685477580)

浮(9.22337203685e + 18)
换句话说,PHP在词法分析阶段,对于一个文字值,它将决定它是否超过了当前系统长的表值范围。如果不是,它将保存的语句,变量是is_long,否则它将代表dval,zval is_float ..

对于任何大于最大整数值的值,我们都必须小心,因为它可能会失去精度:

复制代码代码如下所示:

< PHP

$ = 922337203685477580;

$ = 922337203685477580;
var_dump($ =($ 1));
输出为false。

现在在讨论之前,开始说,PHP是一个32位整数,可能也可能是64,然后决定一些代码可以正常运行在64位,可能是因为隐藏类型转换,导致精度损失,导致代码不能正常运行,在32上系统。

因此,我们必须谨慎对待这个临界值,但是我们已经在PHP中定义了这个临界值:

复制代码代码如下所示:

< PHP

回声php_int_max;

>
当然,为了保险起见,我们应该使用字符串来拯救大整数,用数学函数库如bcmath计算。

此外,还有另一个关键配置将混淆我们。这是php.precision配置,这就决定了有多少有效位当PHP输出另一个浮点值。

最后,让我们回到上面提出的问题,即整数的长和最大值,这样我们就可以保证在长时间转向后,我们会回到浮点数,并且不会丢失精确性。

例如,对于整数,我们知道它是二进制表示法,101,现在,让我们有权,转1.01,给出高隐式有效1,我们得到二进制值5的双倍存储:

复制代码代码如下所示:

0 / / / * 10000000001 *指标位* / 0100000000000000000000000000000000000000000000000000
5的二进制表示,在部分结束时是最不损坏的,在这种情况下,从双返回到长,没有精确的损失。

我们知道,双使用52位表示尾数计算隐含的前1,这是53位精度。然后,如果长的整数值小于,我们就可以得到这个值:

复制代码代码如下所示:

2 ^ 53 - 1 = = 9007199254740991; / /记住,我们现在假设64bits长
所以,这个整数,当长时间的数值转换为双>长时,就不会丢失精度。

相关文章

CDR只是一个可爱的卡通角色效果。

CDR只是一个可爱的卡通角色效果。

只是一个,角色,卡通,效果,可爱,本教程是简要介绍CDR,这是一个简单的方式来创建可爱的卡通人物。课文很可爱,很难。很适合初学者学习。 该教程教朋友使用CDR制作卡通人物。这门课不是很难。写作效果是相当可爱和美丽。转发与朋友分享学习,首先…

Javascript使用推送方法将元素添加到数组

Javascript使用推送方法将元素添加到数组

推送,方法,数组,元素,结尾,本文演示了Javascript使用一个元素如何使用推送方法将一个元素添加到数组的结尾: 下面的代码演示JS数组通过推送方法将元素添加到数组的结尾。 单击按钮将新元素添加到数组中。 试试 香蕉 函数myFunction() { Fruits.p…

在支持使用教程()在JavaSciprt处理字

在支持使用教程()在JavaSciprt处理字

字符串,使用教程,支持,方法,电脑软件,这种方法使字符串显示为超市,如果它是一个标签。 语法 String.sup() 下面是参数的详细信息: Na 返回值: 带标记返回字符串 实例uff1a 字符串支持()方法 新字符串(Hello); 警报(str.sup()); 这将产生以下结果: …

如何使用工作簿模板WPS表教程

如何使用工作簿模板WPS表教程

教程,模板,如何使用,工作,电脑软件,在启动Excel 2013之后,用户可以创建一个空白文档和一个Office的设计模板来根据需要创建一个文档。下面是Excel 2013工作簿模板的使用。 1,启动Excel 2013,程序窗口列出常见的文档模板,鼠标单击需要使用的模板…

美丽的蝴蝶公主插画画家画家教程

美丽的蝴蝶公主插画画家画家教程

教程,画家,插画,蝴蝶,公主,美的效果是很复杂的,特别是在注意时间的时候要注意尺度好,不要太亮,不要太强,这样梦的效果可以呈现得更加清晰和明显。 最终效果 1、打开comicstudio软件,建立一个新的页面,画个草图,用钢笔工具的G笔和笔线。钩应注重…

在Excel中为指定的数据源标记重要

在Excel中为指定的数据源标记重要

数据源,中为,标记,基础,电脑软件,经常在考试的时候,老师会去做一个Excel表格,然后使用一些成就一些特殊的颜色或符号,如超过90是什么颜色,什么颜色的100以上,110以上的颜色,然后,根据颜色,你可以清楚地看到教师考试的总体水平是什么。让我解释如何…

如何利用技术将网页转换成word文档

如何利用技术将网页转换成word文档

文档,网页,转换成,技术,电脑软件,看完照片后 步骤/方法 1,保存在浏览器的网页,访问目标页面,执行菜单文件,具有另存为;;;文件类型选择网页,全部; 2、用WPS文字打开HTML文件执行文件;具有开放;;;;文件类型选择Web文件或所有文件;打开刚刚保存的文件只是现在…

Word2003删除单个宏和删除宏程序Wo

Word2003删除单个宏和删除宏程序Wo

删除,教程,程序,电脑软件,1。删除单个宏 1、在工具菜单上,指向宏;;的子菜单,然后单击宏; 2,在宏名称框中,单击要删除的宏(宏:一个或一组操作,可用于自动执行任务。Visual Basic用于应用程序编程语言,可用于记录宏。)名称的名称。 如果宏没有出现在列表…

PS图象处理软件的行动方法的应用实

PS图象处理软件的行动方法的应用实

应用实例,方法,图象,处理软件,电脑软件,本教程介绍朋友到PS图象处理软件动作的使用方法,是很好的教程,非常适合初学者学习,推荐给像你这样的朋友,可以按照教程一起学习。 我们都知道,很多好漂亮的照片已被修改的PS图象处理软件,但是当我们使用PS…

如何制作照片/的马赛克

如何制作照片/的马赛克

照片,电脑软件,有时我们需要做一个马操作的部分,实际上,有很多方法来实现它。所以如何发挥下面的照片/图片的马赛克的一部分,萧边将推出PS处理了你的方式。 我们通常在照片编辑,如果一些照片无法显示的区域,是最有效的方式打马赛克,所以,如何使当…

避免恶意DDOS攻击占用带宽的PHP方

避免恶意DDOS攻击占用带宽的PHP方

方法,带宽,恶意,电脑软件,DDOS,使用PHP代码实现的DDoS攻击会导致带宽被占用并成为B卡。 治疗是: 修改php.ini文件 1)disable_functions改为gzinflate,默认情况下它是免费的 2)allow_url_fopen设置为OFF 3)php_sockets.dll打开模块 重新启…

教你如何用PS把林依晨的画变成手绘

教你如何用PS把林依晨的画变成手绘

教你,手绘,如何用,电脑软件,PS,图片PS是手绘的。相当不错。这很简单。 PS图象处理软件特殊效果:林依晨换画手绘画(1) check_loading 在本教程之前,我见过其他互联网用户!但不详细!这次做了详细的教程! PS图象处理软件特殊效果:林依晨换画手绘画(2…