我想在php中将浮点值(例如:1.0000124668092E + 14)转换为整数,php中最好的方法是什么。输出应该是“100001246680920”
问问题
137956 次
6 回答
63
你说的转换是什么意思?
- 铸造*:
(int) $float
或intval($float)
- 截断:(
floor($float)
向下)或ceil($float)
(向上) - 四舍五入:
round($float)
- 有额外的模式,见PHP_ROUND_HALF_...
常量
*:强制转换有一些机会,浮点值不能用 int 表示(太大或太小),f.ex。在你的情况下。
PHP_INT_MAX
:此 PHP 版本支持的最大整数。通常是 int(2147483647)。
于 2013-05-09T08:08:27.793 回答
26
我只是想警告你:
>>> (int) (290.15 * 100);
=> 29014
>>> (int) round((290.15 * 100), 0);
=> 29015
于 2019-11-05T13:49:45.850 回答
16
利用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
于 2013-05-09T07:28:30.560 回答
8
总是有 intval() - 不确定这是否是你要找的......
例子: -
$floatValue = 4.5;
echo intval($floatValue); // Returns 4
它不会将值四舍五入为整数,但会去掉小数点和尾随数字,并返回小数点前的整数。
于 2018-08-15T08:59:36.757 回答
1
使用round
,floor
或ceil
方法将其四舍五入为最接近的整数,同时intval()
该整数是有限的。
http://php.net/manual/en/function.round.php
于 2013-05-09T07:29:38.140 回答
1
尝试这个
<?php
$float_val = 1.0000124668092E+14;
echo intval($float_val);
?>
于 2021-07-07T03:37:14.987 回答