如何在PHP中汇总值?

如何在PHP中汇总值?,php,roundup,Php,Roundup,我有这样一个价值观: $value = 2.3333333333; $value = 2.35; 我想把这个值四舍五入如下: $value = 2.3333333333; $value = 2.35; 我已经试过round、ceil等,但结果不是我所期望的 请任何人帮忙 谢谢试试: $value = 2.3333333333; echo number_format($value, 2); 从字面上理解你的问题,这样做可以: $value = (round($original_value

我有这样一个价值观:

$value = 2.3333333333;
$value = 2.35;
我想把这个值四舍五入如下:

$value = 2.3333333333;
$value = 2.35;
我已经试过round、ceil等,但结果不是我所期望的

请任何人帮忙

谢谢

试试:

$value = 2.3333333333;
echo number_format($value, 2);

从字面上理解你的问题,这样做可以:

$value = (round($original_value / 0.05, 0)) * 0.05
i、 e.将四舍五入至最接近的0.05

如果出于某种原因,您希望始终四舍五入到0.05,请使用

$value = (round(($original_value + 0.025) / 0.05, 0)) * 0.05

你有三种可能:圆形(),地板(),天花板()

给你:

$step = 2; // number of step 3th digit
$nbr = round(2.333333333 * $step, 1) / $step; // 2.35

$step = 4; // number of step on 3th digit
$nbr = round(2.333333333 * $step, 1) / $step; // 2.325




您可以使用以下代码:

$value = 2.3333333333;
$value = round ( $value, 2, PHP_ROUND_HALF_UP);

最佳文档位于补充函数中,可向上/向下舍入到任意数量的小数:

/**
* Round up to specified number of decimal places
* @param float $float The number to round up
* @param int $dec How many decimals
*/
function roundup($float, $dec = 2){
    if ($dec == 0) {
        if ($float < 0) {
            return floor($float);
        } else {
            return ceil($float);
        }
    } else {
        $d = pow(10, $dec);
        if ($float < 0) {
            return floor($float * $d) / $d;
        } else {
            return ceil($float * $d) / $d;
        }
    }
}

/**
* Round down to specified number of decimal places
* @param float $float The number to round down
* @param int $dec How many decimals
*/
function rounddown($float, $dec = 2){
    if ($dec == 0) {
        if ($float < 0) {
            return ceil($float);
        } else {
            return floor($float);
        }
    } else {
        $d = pow(10, $dec);
        if ($float < 0) {
            return ceil($float * $d) / $d;
        } else {
            return floor($float * $d) / $d;
        }
    }
}
/**
*四舍五入到指定的小数位数
*@param float$float要四舍五入的数字
*@param int$dec小数位数是多少
*/
函数汇总($float,$dec=2){
如果($dec==0){
如果($float<0){
返回地板(浮动);
}否则{
返回ceil(浮动);
}
}否则{
$d=战俘(10,$12);
如果($float<0){
返回地板($float*$d)/$d;
}否则{
返回ceil($float*$d)/$d;
}
}
}
/**
*四舍五入到指定的小数位数
*@param float$float要向下舍入的数字
*@param int$dec小数位数是多少
*/
函数取整($float,$dec=2){
如果($dec==0){
如果($float<0){
返回ceil(浮动);
}否则{
返回地板(浮动);
}
}否则{
$d=战俘(10,$12);
如果($float<0){
返回ceil($float*$d)/$d;
}否则{
返回地板($float*$d)/$d;
}
}
}

请问您为什么要将其四舍五入到2.35?标准是什么?最接近0.05?@AlexGittemeier-不,它不起作用,它返回2.33请查看以下用户的一些代码片段:。请注意,OP希望四舍五入,而不是精确到第100位。@Alex Gittemeier-+1,确实,总是阅读(并在必要时澄清)规范。仍然相同的结果->2.33这很好,但您能将其用于2.11111111到2.15,2.22222到2.25的范围吗,谢谢you@Rio爱德华多,你是说“总是四舍五入到0.05”?是:)但不到2.66666,等仅在2.111111范围内。444444@Rio爱德华多,我为“永远”总结添加了另一个公式。如果这只适用于某些数字范围,那么最好使用If语句。
/**
* Round up to specified number of decimal places
* @param float $float The number to round up
* @param int $dec How many decimals
*/
function roundup($float, $dec = 2){
    if ($dec == 0) {
        if ($float < 0) {
            return floor($float);
        } else {
            return ceil($float);
        }
    } else {
        $d = pow(10, $dec);
        if ($float < 0) {
            return floor($float * $d) / $d;
        } else {
            return ceil($float * $d) / $d;
        }
    }
}

/**
* Round down to specified number of decimal places
* @param float $float The number to round down
* @param int $dec How many decimals
*/
function rounddown($float, $dec = 2){
    if ($dec == 0) {
        if ($float < 0) {
            return ceil($float);
        } else {
            return floor($float);
        }
    } else {
        $d = pow(10, $dec);
        if ($float < 0) {
            return ceil($float * $d) / $d;
        } else {
            return floor($float * $d) / $d;
        }
    }
}