如何在PHP中舍入值?

ecfdbz9o  于 2023-03-21  发布在  PHP
关注(0)|答案(5)|浏览(111)

我有一个这样的值:

$value = 2.3333333333;

我想把这个值四舍五入成这样

$value = 2.35;

我已经试过圆,天花板等,但结果不是我所期望的。
请任何人帮助。
谢谢

2ul0zpep

2ul0zpep1#

从字面上理解你的问题,这将做到这一点:

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

即将四舍五入到 * 最接近的 * 0.05。
如果出于某种原因,您希望 * 始终四舍五入 * 到0.05,请使用

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

trnvg8h32#

你有三种可能:round(),floor(),ceil()
给你的:

$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

round

<?php
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
    echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
?>

floor

<?php
echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4
?>

ceil

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>
p8h8hvxi

p8h8hvxi3#

向上/向下舍入到任意小数位数的补充函数:

/**
* 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;
        }
    }
}
l2osamch

l2osamch4#

试试看:

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

mqxuamgl5#

您可以使用以下代码:

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

最好的文件是here

相关问题