Общий принцип - рассчет денежных операций и сохранение результат делается без округления, округление делается при выводе сумм на экран.
Лучше не делать рассчеты, используя float: http://ru.php.net/ru/float
Для этого есть BCMath, оно позволяет делать рассчеты без потерь.
Если ты делаешь рассчеты с float (просто в скрипте) - после операции прибавляй 0.00001
По твоему вопросу:
Для неоплаченного заказа цены хранить только в рублях.
Сумму считать тоже в рублях.
Каждую цену и сумму перед умножай на курс отдельно перед присвоением значений в шаблон (надеюсь, у тебя шаблоны?).
20 операций умножения для процессора незаметны.
Для оплаченного заказа храни цену в рублях и сумму фактически полученной валюты.
В базе суммы стоит хранить или в текстовом поле (varchar), или в numeric.
Лучше не делать рассчеты, используя float: http://ru.php.net/ru/float
Для этого есть BCMath, оно позволяет делать рассчеты без потерь.
Если ты делаешь рассчеты с float (просто в скрипте) - после операции прибавляй 0.00001
По твоему вопросу:
Для неоплаченного заказа цены хранить только в рублях.
Сумму считать тоже в рублях.
Каждую цену и сумму перед умножай на курс отдельно перед присвоением значений в шаблон (надеюсь, у тебя шаблоны?).
20 операций умножения для процессора незаметны.
Для оплаченного заказа храни цену в рублях и сумму фактически полученной валюты.
В базе суммы стоит хранить или в текстовом поле (varchar), или в numeric.

