내가 PHP에서 정밀도로 소수점 이하를 버리고 반올림하는 함수, 더 좋은 방법은 무엇입니까?
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';}
}
인 ROUND_UP 부분에 대해 나를 위해 작동 php.net에이 코드 ..
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';}
}
추가 된 몇 마이너스의 .. 얻기 위해이 일을 ... 발견이 어떤 그것을하는 더 좋은 방법? 훨씬 고장없이 작동 대부분의 경우 현재 (난 단지 긍정적 인 소수를 위해 그것을 필요로) ..
$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
을 추가 옵션으로 라운드()가 잘 작동 실 거예요? http://php.net/manual/en/function.round.php – EO2
'0.0130'을 반올림하면 0.1이됩니다. 어떤 수학을하고 있니? – NullUserException
@NullUserException 그는 십진수 1의 특정 정밀도까지 값을 반올림합니다. –