46

我想在php中将浮点值(例如:1.0000124668092E + 14)转换为整数,php中最好的方法是什么。输出应该是“100001246680920”

4

6 回答 6

63

你说的转换是什么意思?

  • 铸造*:(int) $floatintval($float)
  • 截断:(floor($float)向下)或ceil($float)(向上)
  • 四舍五入:round($float)- 有额外的模式,见PHP_ROUND_HALF_...常量

*:强制转换有一些机会,浮点值不能用 int 表示(太大或太小),f.ex。在你的情况下。

PHP_INT_MAX:此 PHP 版本支持的最大整数。通常是 int(2147483647)。

但是,您可以使用BCMathGMP扩展来处理这些大数字。(两者都是有限制的,你只需要启用这些扩展)

于 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

它不会将值四舍五入为整数,但会去掉小数点和尾随数字,并返回小数点前的整数。

这是一些文档: - http://php.net/manual/en/function.intval.php

于 2018-08-15T08:59:36.757 回答
1

使用round,floorceil方法将其四舍五入为最接近的整数,同时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

于 2013-05-09T07:29:38.140 回答
1

尝试这个

<?php
$float_val = 1.0000124668092E+14;
 echo intval($float_val);
?>
于 2021-07-07T03:37:14.987 回答