Функции для точного округления дробей в большую и меньшую сторону в PHP. Есть ли лучший способ сделать это?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Функции для точного округления дробей в большую и меньшую сторону в PHP. Есть ли лучший способ сделать это?

Сообщение Anonymous »

Я нашел этот код на php.net, который мне подходит для части round_up.

function round_up($value, $precision = 0) {
if (!empty($value)) {
$sign = (0 $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 $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.'
'; // 0.0200
echo 'Round_down = '.$azd2.'
'; // 0.0100
echo 'Round_up = '.$azd3.'
'; // 0.1000
echo 'Round_down = '.$azd4.'
'; // 0.0000


Подробнее здесь: https://stackoverflow.com/questions/749 ... any-better
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»