• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Функция Round?

  • Автор темы alexstudent
  • Дата начала

Kizarek86

Green Team
20.07.2007
871
7
BIT
40
ZhAN
А зачем в данном месте округление тарифа?
Либо храните в системе не округленные числа, либо пишите механизм вычисления последнего платежа как Всего-Выплачено )
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
А если округлить до 1.93, то будет 20 в плюсе? :) Бизнес такой бизнес.
Просто разбивать нужно не на равные части.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
Вы получили договор страхования на руки где застраховали что то, страховая сума составила 100 000
Вам рассчитали тариф 7,70
подгонка по ваше утверждение - не более того
сумма м.б. любой
 
T

turumbay

Вы как клиент хотите этот платеж разбить на 4 части, а СК должна отобразить тариф периода и суму периода
Итого тариф периода 7,7/4 =1,925 округляем получаем 1,92
Округление бабла - гениальная идея. Вот тока почему сразу до сотен не округлять? Тариф будет 1900, а сэкономленную на округлении сотку денег попилить с клиентом ;-)
Вы пытаетесь решить такую задачу: разбить произвольную сумму денег на N равных платежей, таким образом, чтобы каждый платеж был кратен 10. Проблемы возникли не из-за функции округления, а из-за того, что эта задача в принципе нерешаемая.
Никакой алгоритм округления вас не спасет: при округлении всегда появляется погрешность, при совершении операций с округленными величинами погрешность накапливается. Подробности по ссылке lmike-а про точность вычислений.
Повторю еще разок мантру: использование чисел с плавающей точкой для финансовых операций должно приравниваться к преступлению.
 
Z

ZhAN

можно смотреть с разных сторон и спорить долго, а вы посмотрите со стороны программиста у которого есть четкое тз, и тогда станет понятно что иногда проще согласиться чем объяснить, что секса не будет. :)
 
N

nvyush

можно смотреть с разных сторон и спорить долго, а вы посмотрите со стороны программиста у которого есть четкое тз, и тогда станет понятно что иногда проще согласиться чем объяснить, что секса не будет. :)
Соглашаться можно с кем угодно и с чем угодно, но если ТЗ требует того, что написано выше, его нельзя назвать чётким. Попробуйте всё-таки объяснить заказчику, что сумму в 11 у.е. невозможно разделить на 2, 3, и т.д. равных платежа. В конце-концов, ТЗ пишут люди, а людям свойственно ошибаться. Предложите выпустить дополнение к ТЗ, учитывающее данную проблему, если отступления от ТЗ недопустимы.
 
T

turumbay

можно смотреть с разных сторон и спорить долго, а вы посмотрите со стороны программиста у которого есть четкое тз, и тогда станет понятно что иногда проще согласиться чем объяснить, что секса не будет. :)
Я как раз со стороны программиста и выступаю.
Четкость ТЗ и его выполнимость - не одно и то же:
Иногда таки нужно менять ТЗ. Вариантов масса, часть здесь привели: отказаться от округлений, мириться с погрешностью, делать платежи не равными, всегда округлять в пользу компании и т.п.
P.S. Вы в примере измените кол-во периодов на 3 или 6 и подумайте, что будете делать в этом случае.
 
Z

ZhAN

P.S. Вы в примере измените кол-во периодов на 3 или 6 и подумайте, что будете делать в этом случае.

Хорошо то что период может быть только полугодие и получится 2-мя платежами, или поквартально 4-мя платежами, все остальное идет одноразовым платежом.

:D
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!