【问题标题】:store bigint in php variable将 bigint 存储在 php 变量中
【发布时间】:2017-07-11 03:28:22
【问题描述】:

我写了一个函数来为我的数字的每 8 个零添加一个逗号

我需要将值存储在 PHP 变量或数组中,但它保存为“1.0E+30”

这是我的 PHP 代码:

function SplitHex($number) {
$number_split = str_split($number,1);
$number_split_revers = array_reverse($number_split);
$i = 0;
foreach ($number_split_revers as $key => $value ) {
    if ( $value == 0) {
        $i++;
        if ( $i == 8 ) {
        $number_split_revers[$key] = str_replace(0,",0",$value);
        $i=0;
        }
    }

}
    $final = '';
    $number_final = array_reverse($number_split_revers);
    foreach ($number_final as $value ) {
        $final .= $value;   
    }

//$final = strval(implode("",$number_final));

return $final;

然后我调用函数:

$test[2] = SplitHex(1000000000000000000000000000000);
var_dump ($test);
print_r ($test);

echoprint_rvar_dump 的输出都是一样的:

1.0E+30

但必须是1000000,00000000,00000000,00000000

我搜索了很多,但找不到解决这个问题的正确方法

【问题讨论】:

标签: php bigint


【解决方案1】:

仅供参考,

如果数字太长,在php中无法适应32位整数格式,所以将其存储在float中。

因此,如果它超过 PHP_INT_MAX 大小,您将看不到该整数值。

但这是一个替代方案,

$test[2] = number_format(SplitHex(1000000000000000000000000000000),0,null,'');
var_dump ($test);
print_r ($test);

试一试,应该可以的。

【讨论】:

  • 它不工作,输出是1000000000000000019884624838656 但它应该是1000000,00000000,00000000,00000000
猜你喜欢
  • 2021-06-22
  • 2018-08-05
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2011-07-15
  • 2016-05-01
相关资源
最近更新 更多