gpt4 book ai didi

php - 是否可以在不损失 PHP 精度的情况下使用大型 unsigned int64?

转载 作者:可可西里 更新时间:2023-10-31 23:03:01 25 4
gpt4 key购买 nike

我了解整数大小,PHP_INT_MAX 取决于平台。

在 64 位系统上我可以获得:

$large_number = 9223372036854775807

从我读到的 PHP Document Example 3 here ,当整数溢出时,PHP 将整数处理为带有 precision of roughly 14 decimals digits 的 float 。 ,即:

Unsigned Int64: 18446744073709551615

PHP will handles as: 1.844674407371E+19

所以看起来所有的精度都只保持在 Signed Int64 的最大值。

这真的只是 PHP 的限制,我对此无能为力吗?

最佳答案

这很 hacky,我向你保证,使用 GMP 会让你的生活更轻松,但使用 pack() 和一点二元思维是可能的:

<?php 
$large_number = 9223372036854775807;
$left = 0xffffffff00000000;
$right = 0x00000000ffffffff;

$l = ($large_number & $left) >>32; //shift 32 bits left
$r = $large_number & $right;

$int64_binary_string = pack('NN', $l, $r);

我还没有对此进行测试,不会在现实生活中使用它,但它可能接近您正在寻找的东西。

http://tw1.php.net/manual/en/function.pack.php

关于php - 是否可以在不损失 PHP 精度的情况下使用大型 unsigned int64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com