new*_*bie 26 php decimal rounding
我想在没有四舍五入的情况下删除小数.例如,如果我有1.505,我想删除最后一个小数,值应该是1.50.PHP中有这样的功能吗?
Ren*_*Pot 37
你需要这样的floor():
$rounded = floor($float*100)/100;
Run Code Online (Sandbox Code Playgroud)
或者你转换为整数:
$rounded = 0.01 * (int)($float*100);
Run Code Online (Sandbox Code Playgroud)
这样它就不会四舍五入.
Isi*_*ode 11
$float = 1.505;
echo sprintf("%.2f", $float);
//outputs 1.50
Run Code Online (Sandbox Code Playgroud)
gor*_*rds 11
要对 +ve和-ve 数字准确地执行此操作,您需要使用:
- floor()+ve 数字
的 phpceil()函数- -ve 数字的 php函数
function truncate_float($number, $decimals) {
$power = pow(10, $decimals);
if($number > 0){
return floor($number * $power) / $power;
} else {
return ceil($number * $power) / $power;
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的原因是floor()总是将数字向下舍入,而不是向零舍入。
即floor()有效地将 -ve 数字向更大的绝对值四舍五入,
例如floor(1.5) = 1whilefloor(-1.5) = -2
因此,对于multiply by power, remove decimals, divide by power截断方法:
-floor()仅适用于正数
-ceil()仅适用于负数
要对此进行测试,请将以下代码复制到http://phpfiddle.org/lite(或类似)的编辑器中:
<div>Php Truncate Function</div>
<br>
<?php
function truncate_float($number, $places) {
$power = pow(10, $places);
if($number > 0){
return floor($number * $power) / $power;
} else {
return ceil($number * $power) / $power;
}
}
// demo
$lat = 52.4884;
$lng = -1.88651;
$lat_tr = truncate_float($lat, 3);
$lng_tr = truncate_float($lng, 3);
echo 'lat = ' . $lat . '<br>';
echo 'lat truncated = ' . $lat_tr . '<br>';
echo 'lat = ' . $lng . '<br>';
echo 'lat truncated = ' . $lng_tr . '<br><br>';
// demo of floor() on negatives
echo 'floor (1.5) = ' . floor(1.5) . '<br>';
echo 'floor (-1.5) = ' . floor(-1.5) . '<br>';
?>
Run Code Online (Sandbox Code Playgroud)
小智 9
使用 PHP 原生函数bcdiv
echo bcdiv(2.56789, 1, 2); // 2.56
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38345 次 |
| 最近记录: |