Zend_Currency值用美分而不是美元

时间:2010-12-02 09:02:45

标签: php zend-framework zend-currency

我正在使用Zend_Currency,并且希望将这些值存储为美分(与美元相对),因为系统的其他部分以美分为单位。所以,我想以美分初始化和检索Zend_Currency对象的值,有没有办法以这种方式配置Zend_Currency?

我知道当我检索该值时,我可以除以100,但我不知道当/如果我们需要国际化时这将是多么兼容。即。是所有货币100“分”单位到“美元”。

1 个答案:

答案 0 :(得分:0)

所有货币都是“美元”100“分”?

没有

虽然大多数人都这样做,但有一些人的基数为'5'或基数为'1000'或根本没有小数。

来源:http://en.wikipedia.org/wiki/List_of_circulating_currencies

您应该使用Zend Currency存储原始值并让它为您进行转换。

    // 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';
    }
    }
}

输出: float(100.5) float(261.0387)