好的,我有这个浮点数:
$floatval = '1.05143617E+18';它的等效整数是:-
1051436170000000000使用php,我尝试将这个浮点数转换为所需的整数值。
这是我的尝试:
$floatval = '1.05143617E+18';
var_dump(convert($floatval));
function convert($floatval)
{
$divided = explode('+', $floatval);
$first = floatval($divided[0]);
$second = intval($divided[1]);
$final = intval($first * pow(10, $second));
return $final;
}输出:-
953738112不管我怎么尝试,输出结果都不符合要求。我哪里做错了?
发布于 2016-08-19 06:54:37
$floatval = (float) '1.05143617E+18';
$intval = (int) $floatval;
var_dump($intval);输出:int(1051436170000000000)
发布于 2016-08-19 06:34:14
试试这个
intval(floatval($floatval));发布于 2016-08-19 07:48:20
似乎您正在处理整数溢出,可能是因为您在Windows上运行PHP,而您的系统不支持64位整数。您可以通过使用bcmath扩展中的函数进行计算来避免此问题。如果您在Windows上运行,PHP将具有对bcmath的内置支持,如文档here中所述。使用bcmath,您的convert函数可以像这样实现:
function convert($floatval)
{
$divided = explode('E+', $floatval);
$base = $divided[0];
$exp = $divided[1];
$final = bcmul($base, bcpow('10', $exp));
return $final;
}在没有整数溢出问题的其他系统上,其他基于强制转换的解决方案应该可以工作。
https://stackoverflow.com/questions/39028317
复制相似问题