gpt4 book ai didi

php - 在 PHP 中精确舍入和舍入分数的函数,有更好的方法吗?

转载 作者:行者123 更新时间:2023-12-02 07:45:14 25 4
gpt4 key购买 nike

我在 php.net 上找到了这段代码,它适用于 round_up 部分。

function round_up($value, $precision = 0) { 
if (!empty($value)) {
$sign = (0 <= $value) ? +1 : -1;
$amt = explode('.', $value);
$precision = (int) $precision;
if (strlen($amt[1]) > $precision) {
$next = (int) substr($amt[1], $precision);
$amt[1] = (float) (('.'.substr($amt[1], 0, $precision)) * $sign);
if (0 != $next) {
if (+1 == $sign) {
$amt[1] = $amt[1] + (float) (('.'.str_repeat('0', $precision - 1).'1') * $sign);
}
}
}
else {
$amt[1] = (float) (('.'.$amt[1]) * $sign);
}
return $amt[0] + $amt[1];
}
else {echo 'error';}
}

添加了几个负号..以获得这个...

function round_down($value, $precision = 0) { 
if (!empty($value)) {
$sign = (0 <= $value) ? +1 : -1;
$amt = explode('.', $value);
$precision = (int) $precision;
if (strlen($amt[1]) > $precision) {
$next = (int) substr($amt[1], $precision);
$amt[1] = (float) (('.'.substr($amt[1], 0, $precision)) * $sign);
if (0 != $next) {
if (-1 == $sign) {
$amt[1] = $amt[1] - (float) (('.'.str_repeat('0', $precision - 1).'1') * $sign);
}
}
}
else {
$amt[1] = (float) (('.'.$amt[1]) * $sign);
}
return $amt[0] + $amt[1];
}
else {echo 'error';}
}

有没有更好的方法呢? (我只需要它用于正小数)目前大部分情况下它都可以正常工作..

$azd = 0.0130; 

$azd1 = number_format(round_up($azd,2),4);
$azd2 = number_format(round_down($azd,2),4);
$azd3 = number_format(round_up($azd,1),4);
$azd4 = number_format(round_down($azd,1),4);

echo 'Round_up = '.$azd1.'<br>'; // 0.0200
echo 'Round_down = '.$azd2.'<br>'; // 0.0100
echo 'Round_up = '.$azd3.'<br>'; // 0.1000
echo 'Round_down = '.$azd4.'<br>'; // 0.0000

最佳答案

function round_up($value, $precision=0) {
$power = pow(10,$precision);
return ceil($value*$power)/$power;
}
function round_down($value, $precision=0) {
$power = pow(10,$precision);
return floor($value*$power)/$power;
}

关于php - 在 PHP 中精确舍入和舍入分数的函数,有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7491434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com