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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部