Страница 1 из 1
Проблемы округления
Добавлено: Ср фев 04, 2009 5:56 pm
chtito2
Иногда проскакивают депозиты вроде 183.368494 или 19.478597. При этом замечу, что цен за мегабайт ниже чем 0.005 у.е. (т.е. "полкопейки") нет. Еще есть цена 0.01 и 0.02. Вроде со всеми арифметическими операциями на вещественных числах 0.02, 0.01 и 0.005 довольно стабильно работают и Perl и MySQL 5.1 и возвращают вполне ожидаемый результат.
Добавлено: Ср фев 04, 2009 7:05 pm
NiTr0
Ничего удивительного - траф считается в байтах. Сумма - соответственно тоже целой не бывает практически никогда.
Добавлено: Ср фев 04, 2009 7:58 pm
chtito2
Хм. я почему-то зациклился на цене за полный мегабайт. Ну раз такое дело, то что поделаешь. Наверное оно и к лучшему. Спасибо.
Добавлено: Чт фев 05, 2009 7:35 am
chtito2
NiTr0 писал(а):Ничего удивительного - траф считается в байтах. Сумма - соответственно тоже целой не бывает практически никогда.
И все же нет... У большинства депозиты нормально округлены (98.230000, 23.390000, 133.430000, 55.710000 и т.д.) и лишь у отдельных глючно (37.562986, 118.746581, 0.006232 и еще 2-3). Как это можно объяснить?
Добавлено: Чт фев 05, 2009 10:14 am
NiTr0
У нас - практически у всех пользователей "нецелые" суммы за сессии.
Добавлено: Сб фев 07, 2009 5:22 pm
chtito2
NiTr0 писал(а):У нас - практически у всех пользователей "нецелые" суммы за сессии.
В поддержку ваших слов следующий код в traffic2sql не оставляет сомнений, что депозит всегда будет "нецелым":
$sum_in += $in / $conf{MB_SIZE} * $price_in if ($price_in > 0);
В таком случае сразу назревает второй вопрос: как так могло получиться, что у меня большинство депозитов строго кратны ценам за мегабайт 0.02, 0.01 или 0.005?

Например 81.530000, 89.110000.