php 不支持无符号整数,是否可以使用大型无符号int64而不会在PHP中失去精度?
标签:php
我了解整数大小,PHP_INT_MAX与平台有关.
在64位系统上,我可以获得:
$large_number = 9223372036854775807
Unsigned Int64: 18446744073709551615
PHP will handles as: 1.844674407371E+19
因此,似乎所有精度都只能达到Signed Int64的最大值.
这真的只是PHP的限制,我对此无能为力吗?
解决方法:
是的,这是PHP的局限性,除了重新编译PHP解释器外,您无能为力.即使这样,您仍然受限于本机系统支持的类型,这些类型通常不会超过64位.如您所知,您可以使用GMP或BCMath,但这不是您要的.
在后台,根据您的系统,PHP integer和PHP floating point类型对应于带符号的C整数类型和C浮点类型(PHP始终对“ floats” AFAIK使用C双精度).这是静态关系,编译后不能更改.由于C类型具有固定的精度,因此PHP确实也具有.
浮点数的“溢出”只是一个方便的折衷,因此您可以存储很大的数字,而不是根本不存储.是的,您会损失一些精度,但仅限于significand.PHP不会自动将数字转换为其他更大精度的浮点格式,因为它没有整数.
标签:php
来源: https://codeday.me/bug/20191010/1888621.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
