如何在php中将浮点值转换为整数?

时间:2013-05-09 07:27:08

标签: php floating-point int

我想在php中将浮点值(例如:1.0000124668092E + 14)转换为Integer,php.output中最好的方法是“100001246680920”

6 个答案:

答案 0 :(得分:42)

转换是什么意思?

  • 施放*:(int) $floatintval($float)
  • 截断:floor($float)(向下)或ceil($float)(向上)
  • 舍入:round($float) - 还有modes,请参阅PHP_ROUND_HALF_...常量

* :cast有一定几率,浮点值不能用int表示(太大或太小),f.ex。在你的情况下。

  

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

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

答案 1 :(得分:13)

使用round()

$float_val = 4.5;

echo round($float_val);

您还可以为more info

设置精度和舍入模式的参数

更新(根据您更新的问题):

$float_val = 1.0000124668092E+14;
printf('%.0f', $float_val / 1E+14); //Output Rounds Of To 1000012466809201

答案 2 :(得分:3)

总是有intval()-不确定这是否是您想要的...

示例:-

$floatValue = 4.5;
echo intval($floatValue);    // Returns 4

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

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

答案 3 :(得分:1)

使用roundfloorceil方法将其四舍五入为最接近的整数,以及有限的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

答案 4 :(得分:1)

我只想向您警告

>>> (int) (290.15 * 100);
=> 29014
>>> (int) round((290.15 * 100), 0);
=> 29015

答案 5 :(得分:1)

试试这个

<?php
$float_val = 1.0000124668092E+14;
 echo intval($float_val);
?>