Значение Zend_Currency с центами вместо долларов - PullRequest
0 голосов
/ 02 декабря 2010

Я использую Zend_Currency и хотел бы хранить значения в центах (в отличие от долларов) из-за других частей системы, которые работают в центах. Итак, я хотел бы инициализировать и получить значения для объектов Zend_Currency в центах, есть ли способ настроить Zend_Currency таким образом?

Мне известно, что я могу просто разделить на 100, когда получу значение, но я не знаю, насколько это совместимо, когда / если нам потребуется интернационализация. то есть. Являются ли все валюты на 100 центов по отношению к доллару.

1 Ответ

0 голосов
/ 03 декабря 2010

Являются ли все валюты на 100 центовых единиц по отношению к доллару? 1002 *

Нет.

Хотя большинство из них, есть несколько, которые имеют базу'5' или основание '1000' или вообще без десятичной дроби.

source: http://en.wikipedia.org/wiki/List_of_circulating_currencies

Вы должны использовать Zend Currency для хранения необработанного значения и позволить ему выполнять преобразования дляyou.

    // original money
    $money = new Zend_Currency('US');
    $money->setValue('100.50');

    // conversion
    $oman = new Zend_Currency('OM');
    $oman->setService(new My_Currency_Exchange());
    $oman->setValue($money->getValue(), $money->getShortName());
    var_dump($money->getValue(), $oman->getValue());

Примечание: My_Currency_Exchange () - это созданный мной фиктивный класс, он выглядит следующим образом:

<?php

class My_Currency_Exchange implements Zend_Currency_CurrencyInterface
{
public function getRate($from, $to)
{
    if ($from !== "USD") {
        throw new Exception ('We only do USD : '  . $from);
    }

    switch ($to) {
        case 'OMR':
            // value from xe.com as of today
            return '2.59740';
    }
    }
}

output: float(100.5) float(261.0387)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...