Nik*_*s R 7 php integer casting type-conversion
我一直在寻找一段时间,但我能找到的不是我寻找的东西.我需要将一个可能非常大的整数值转换为字符串.听起来很简单:"$var"?不,因为这可以导致E+数字的表示.
<?php
$var = 10000000000000000000000000;
echo $var."\n";
echo "'$var'\n";
echo (string) $var."\n";
echo strval($var);
?>
Run Code Online (Sandbox Code Playgroud)
1.0E+25
'1.0E+25'
1.0E+25
1.0E+25
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变输出10000000000000000000000000?
这不是由PHP存储为整数,而是浮点数,这就是为什么最终得到的是1.0E + 25而不是10000000000000000000000000.
遗憾的是,在PHP中将其用作整数值是不可能的,因为PHP无法保存该大小的整数.如果这来自数据库,那么它将是一个字符串,您可以随心所欲地使用它.如果将其存储在其他位置,则将其存储为字符串.
您可以选择将其存储为浮动并始终将其考虑在内,但这需要额外的转换和处理.
它也被建议使用GNU Multiple Precision,但默认情况下在PHP中没有启用.
$int=gmp_init("10000000000000000000000000");
$string=gmp_strval($int);
echo $string;
Run Code Online (Sandbox Code Playgroud)
更新: 找到下一篇文章:
// strval() will lose digits around pow(2,45);
echo pow(2,50); // 1.1258999068426E+015
echo (string)pow(2,50); // 1.1258999068426E+015
echo strval(pow(2,50)); // 1.1258999068426E+015
// full conversion
printf('%0.0f',pow(2,50)); // 112589906846624
echo sprintf('%0.0f',pow(2,50)); // 112589906846624
Run Code Online (Sandbox Code Playgroud)
使用printf或sprintf.
| 归档时间: |
|
| 查看次数: |
10071 次 |
| 最近记录: |