myname
Guest
ошибка при вычетании вещественных чисел
Заранее извиняюсь.. если объясню плохо.. так как не знаю даже в чем проблема
Есть у меня цикл в котором делаются некоторые перерасчеты
и работает он очень хорошо и правильно до момента.. когда параметры принимают следующее значение:
(значения параметров до строчки.. где глючит)
payInDay : 0.81967213114754
payInDayFormat : 0.81
_rest : 0.010000000000002
restFormat : 0.01
$userObj->balance : 0.82
и в той злосчастной строчке он делает присваивания и получает следущее значение:
userObj_balance : -1.0234868508263E-016
как так??... ведь... если я не "машина"..то ручками я получу :
$userObj->_balance -= $payInDayFormat - $restFormat; <==> 0.82 - 0.81 - 0.01
где я туплю??... помогите, плиз
Заранее извиняюсь.. если объясню плохо.. так как не знаю даже в чем проблема
Есть у меня цикл в котором делаются некоторые перерасчеты
PHP:
while ( *CONDITION* ) {
...
// считаем сколько нужно списывать со счета в день
$payInDay = $planObj->price / $dayInYear;
// форматируем к предствалению DECIMAL(N,2)
$payInDayFormat = floor($payInDay * 100) / 100;
// считаем остаток.. прибовляем к существующему
$_rest += $payInDay - $payInDayFormat;
// тут... либо $restFormat = 0.00 либо $restFormat = 0.01
$restFormat = floor($_rest * 100) / 100;
// перерасчет баланса и остатка
$userObj->_balance -= $payInDayFormat - $restFormat; // в этой строчке и глючит!!
$userObj->_rest -= $restFormat;
...
}
(значения параметров до строчки.. где глючит)
payInDay : 0.81967213114754
payInDayFormat : 0.81
_rest : 0.010000000000002
restFormat : 0.01
$userObj->balance : 0.82
и в той злосчастной строчке он делает присваивания и получает следущее значение:
userObj_balance : -1.0234868508263E-016
как так??... ведь... если я не "машина"..то ручками я получу :
$userObj->_balance -= $payInDayFormat - $restFormat; <==> 0.82 - 0.81 - 0.01
где я туплю??... помогите, плиз