PHP:字符串转换64位整数
-
21-08-2019 - |
题
我试图在一个字符串变量使用硬编码的64位整数。
Simplfied我想做的事情是这样的:
$i = 76561197961384956;
$s = "i = $i";
这将导致s
之中:
i = 76561197961384956
这是PHP投大整数浮动并显然是不行的,因此s
是:
i = 7.65611979614E+16
虽然几种其它方法等铸造等失败,我发现number_format()
并使用它是这样的:
$s = "i = " . number_format($i, 0, '.', '');
但是,这导致s
之中:
i = 76561197961384960
看起来像一个近似的问题,但如何解决这一问题?
解决方案
您正在失去对分配的精度,而不是字符串转换。如果这个变量的值实际上是硬编码的,你不能改变的,还有什么可以做的。
像A线:
$i = 76561197961384956;
将永远失去精度。如果你需要保持整个事情,它存储到一个字符串,你不能将它作为存储这样一个int,并保持所有的数字。
其他提示
现在唯一的办法大整数运算在PHP是使用处理大量的字符串bcmath时或GMP扩展。 64位整数被刨光在PHP6。
因此,使用大的整数,当它们转换成字符串,否则你将失去在分配(自动施放浮动),然后使用该字符串数学库的进一步处理你的电话号码精度。
您是否尝试过使用PHP的函数intval()?
不隶属于 StackOverflow