我想在php中将浮点值(例如:1.0000124668092E+14)转换为整数,最好的方法是什么?输出应为“100001246680920”。
什么是转换?
(int) $float
或 intval($float)
floor($float)
(向下)或 ceil($float)
(向上)round($float)
- 有附加的模式,请查看PHP_ROUND_HALF_...
常量*: 强制类型转换有一定机率无法表示 float 值为 int(太大或太小),例如在您的情况中。
PHP_INT_MAX
: 在此构建的 PHP 中支持的最大整数。通常为 int(2147483647)。
我只是想警告你:
>>> (int) (290.15 * 100);
=> 29014
>>> (int) round((290.15 * 100), 0);
=> 29015
使用round()
$float_val = 4.5;
echo round($float_val);
您还可以设置精度和舍入模式的参数,了解更多信息
更新(根据您的更新问题):
$float_val = 1.0000124668092E+14;
printf('%.0f', $float_val / 1E+14); //Output Rounds Of To 1000012466809201
总有一个intval() - 不确定这是否是您正在寻找的...
示例:
$floatValue = 4.5;
echo intval($floatValue); // Returns 4
试试这个
<?php
$float_val = 1.0000124668092E+14;
echo intval($float_val);
?>
round
、floor
或 ceil
方法将其四舍五入到最接近的整数,以及 intval()
但其受限制。
http://php.net/manual/en/function.round.php
http://php.net/manual/en/function.ceil.php
http://php.net/manual/en/function.floor.php
floor()
和ceil()
仍将作为float
类型返回,因为根据文档,“浮点数的值范围通常比整数大”。 - Bananaapple