【发布时间】:2013-05-03 14:59:04
【问题描述】:
我想在php中将浮点值(例如:1.0000124668092E+14)转换为整数,php.output中最好的方法是“100001246680920”
【问题讨论】:
标签: php floating-point int
我想在php中将浮点值(例如:1.0000124668092E+14)转换为整数,php.output中最好的方法是“100001246680920”
【问题讨论】:
标签: php floating-point int
转换是什么意思?
(int) $float 或 intval($float)
floor($float)(向下)或ceil($float)(向上)round($float) - 有额外的modes,参见PHP_ROUND_HALF_... 常量*:强制转换有一些机会,浮点值不能用 int(太大或太小)表示,f.ex。在你的情况下。
PHP_INT_MAX:此 PHP 版本支持的最大整数。通常是 int(2147483647)。
【讨论】:
floor() 和ceil() 仍将返回float 类型,因为根据文档,“float 的取值范围通常大于 integer 的取值范围”。跨度>
我只想警告你:
>>> (int) (290.15 * 100);
=> 29014
>>> (int) round((290.15 * 100), 0);
=> 29015
【讨论】:
使用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
【讨论】:
总是有 intval() - 不确定这是否是你要找的......
示例:-
$floatValue = 4.5;
echo intval($floatValue); // Returns 4
它不会将值四舍五入为整数,但会去除小数和尾随数字,并返回小数点前的整数。
【讨论】:
使用round、floor 或ceil 方法将其四舍五入为最接近的整数,以及有限的intval()。
http://php.net/manual/en/function.round.php
【讨论】:
试试这个
<?php
$float_val = 1.0000124668092E+14;
echo intval($float_val);
?>
【讨论】: