当前位置: 首页>>代码示例>>PHP>>正文


PHP Zend_Locale_Math类代码示例

本文整理汇总了PHP中Zend_Locale_Math的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Locale_Math类的具体用法?PHP Zend_Locale_Math怎么用?PHP Zend_Locale_Math使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Zend_Locale_Math类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: add

 /**
  * Iterate over the order items and calculate the gst
  * for each depending on StreakGSTModule.config.currency_percentages()
  *
  * @param Order     $order
  * @param null $value
  * @throws ValidationException
  * @throws null
  */
 public function add($order, $value = null)
 {
     $gst = new Price();
     $gst->setCurrency(ShopConfig::current_shop_config()->BaseCurrency);
     $descriptions = array();
     /** @var Price|null $calculated */
     $calculated = null;
     /** @var Item $item */
     foreach ($order->Items() as $item) {
         if ($price = $item->Price()) {
             $currency = $price->getCurrency();
             if ($rate = self::rate_for_currency($currency)) {
                 if (!$calculated) {
                     $calculated = new Price();
                 }
                 $percentage = Zend_Locale_Math::Div($rate, 100.0, 10);
                 $taxed = Zend_Locale_Math::Mul($price, $percentage, 10);
                 $temp = Zend_Locale_Math::Add($calculated, $taxed, 10);
                 $calculated->setAmount($temp);
                 $descriptions[$currency] = static::description($currency);
             }
         }
     }
     if ($calculated) {
         $mod = new StreakGST_Modification();
         $mod->OrderID = $order->ID;
         $mod->Price = 0;
         $mod->Description = implode("<br/>\n", $descriptions);
         $mod->GST = $calculated->getAmount();
         $mod->Value = $calculated->getAmount();
         $mod->write();
     }
 }
开发者ID:swipestreak,项目名称:gst,代码行数:42,代码来源:Modification.php

示例2: provideLeastAmount

 /**
  * Returns the least of the passed in price and the price with this discount applied, or null
  * if this discounted price is larger than the existing one. This can then be used in extension
  * call to find the least discounted price.
  *
  * @param Price $amount
  * @return Price|null
  */
 public function provideLeastAmount(Price $amount)
 {
     /** @var StreakDiscountType $discountType */
     if (($discountType = $this->owner->StreakDiscountType()) && $discountType->exists()) {
         $discounted = $discountType->discountedAmount($amount);
         $res = Zend_Locale_Math::Comp($amount->getAmount(), $discounted->getAmount());
         if ($res) {
             return $discounted;
         }
     }
     return null;
 }
开发者ID:swipestreak,项目名称:discounts,代码行数:20,代码来源:DiscountPercentage.php

示例3: provideLeastAmount

 /**
  * Returns the least of the passed in price and the price with this discount applied, or null
  * if this discounted price is larger than the existing one. This can then be used in extension
  * call to find the least discounted price.
  *
  * @param Price $amount
  * @param  number $discountAmount
  * @return bool
  */
 public function provideLeastAmount(Price $amount, $discountAmount)
 {
     if (!$discountAmount) {
         return false;
     }
     $discounted = self::calc_discounted_amount($amount, $discountAmount);
     $res = Zend_Locale_Math::Comp($amount->getAmount(), $discounted->getAmount());
     if ($res) {
         return $discounted;
     }
     return null;
 }
开发者ID:swipestreak,项目名称:discounts,代码行数:21,代码来源:DiscountPrice.php

示例4: discountedAmount

 /**
  * Returns amount reduced by $this->Measure.
  *
  * @param Price|number $amount
  * @param $discount
  * @return Price
  */
 public function discountedAmount($forAmount)
 {
     if ($this->owner->UsePriceColumn) {
         $price = new Price();
         $price->setCurrency(ShopConfig::current_shop_config()->BaseCurrency);
         if ($forAmount instanceof Money) {
             $price->setAmount($forAmount->getAmount());
         } else {
             $price->setAmount($forAmount);
         }
         $price->setAmount(Zend_Locale_Math::Sub($price->getAmount(), $this->owner->Measure, 10));
         return $price;
     }
     return null;
 }
开发者ID:swipestreak,项目名称:discounts,代码行数:22,代码来源:DiscountTypePrice.php

示例5: discountedAmount

 /**
  * Returns the amount minus percentage from Measure.
  *
  * @param Price $forAmount
  * @return Price
  */
 public function discountedAmount($forAmount)
 {
     if ($this->owner->UsePercentageColumn) {
         $price = new Price();
         if ($forAmount instanceof Money) {
             $price->setAmount($forAmount->getAmount());
             $price->setCurrency($forAmount->getCurrency());
         } else {
             $price->setAmount($forAmount);
             $price->setCurrency(ShopConfig::current_shop_config()->BaseCurrency);
         }
         // only recalculate if there is a percentage
         if ($this->owner->Measure != 0) {
             $original = $price->getAmount();
             $percentage = Zend_Locale_Math::Div($this->owner->Measure, self::OneHundred, 10);
             $difference = Zend_Locale_Math::Mul($original, $percentage, 10);
             $price->setAmount(Zend_Locale_Math::Sub($original, $difference, 10));
         }
         return $price;
     }
     return null;
 }
开发者ID:swipestreak,项目名称:discounts,代码行数:28,代码来源:DiscountTypePercentage.php

示例6: add

 /**
  * @param Order     $order
  * @param null $value
  * @throws ValidationException
  * @throws null
  */
 public function add($order, $value = null)
 {
     if ($order->ShippingRegionCode) {
         if ($orderRegion = Region_Shipping::get()->filter('Code', $order->ShippingRegionCode)->first()) {
             $shippingCost = 0.0;
             /** @var Item $item */
             foreach ($order->Items() as $item) {
                 $productRegion = $item->Product()->Shippables()->filter('RegionID', $orderRegion->ID)->first();
                 if ($productRegion) {
                     $shippingCost = Zend_Locale_Math::Add($shippingCost, Zend_Locale_Math::Mul($productRegion->Price, $item->Quantity));
                 }
             }
             //Generate the Modification now that we have picked the correct rate
             $mod = new StreakRegionalShipping_Modification();
             $mod->OrderID = $order->ID;
             $mod->RegionID = $orderRegion->ID;
             $mod->Price = $shippingCost;
             $mod->Description = "Shipping to {$orderRegion->Title}";
             $mod->Value = $shippingCost;
             $mod->write();
         }
     }
 }
开发者ID:swipestreak,项目名称:regionalshipping,代码行数:29,代码来源:Modification.php

示例7: setType

 /**
  * Set a new type, and convert the value
  *
  * @param  string $type New type to set
  * @throws Zend_Measure_Exception
  * @return Zend_Measure_Abstract
  */
 public function setType($type)
 {
     if (empty($this->_units[$type])) {
         require_once 'Zend/Measure/Exception.php';
         throw new Zend_Measure_Exception("Type ({$type}) is unknown");
     }
     if (empty($this->_type)) {
         $this->_type = $type;
     } else {
         // Convert to standard value
         $value = $this->_value;
         if (is_array($this->_units[$this->getType()][0])) {
             foreach ($this->_units[$this->getType()][0] as $key => $found) {
                 switch ($key) {
                     case "/":
                         if ($found != 0) {
                             $value = call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                         }
                         break;
                     case "+":
                         $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                         break;
                     case "-":
                         $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                         break;
                     default:
                         $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                         break;
                 }
             }
         } else {
             $value = call_user_func(Zend_Locale_Math::$mul, $value, $this->_units[$this->getType()][0], 25);
         }
         // Convert to expected value
         if (is_array($this->_units[$type][0])) {
             foreach (array_reverse($this->_units[$type][0]) as $key => $found) {
                 switch ($key) {
                     case "/":
                         $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                         break;
                     case "+":
                         $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                         break;
                     case "-":
                         $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                         break;
                     default:
                         if ($found != 0) {
                             $value = call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                         }
                         break;
                 }
             }
         } else {
             $value = call_user_func(Zend_Locale_Math::$div, $value, $this->_units[$type][0], 25);
         }
         $slength = strlen($value);
         $length = 0;
         for ($i = 1; $i <= $slength; ++$i) {
             if ($value[$slength - $i] != '0') {
                 $length = 26 - $i;
                 break;
             }
         }
         $this->_value = Zend_Locale_Math::round($value, $length);
         $this->_type = $type;
     }
     return $this;
 }
开发者ID:be-dmitry,项目名称:zf1,代码行数:76,代码来源:Abstract.php

示例8: _round

 /**
  * Round $number with set $precision
  * 
  * @param float $number Number to round
  * @param integer $precision Precision
  */
 protected function _round($number, $precision)
 {
     return Zend_Locale_Math::round($number, $precision);
 }
开发者ID:BGCX262,项目名称:zym-svn-to-git,代码行数:10,代码来源:FileSize.php

示例9: testNegativeRounding

 public function testNegativeRounding()
 {
     $this->assertEquals('-3', Zend_Locale_Math::round('-3.4'));
     $this->assertEquals(round(-3.4), Zend_Locale_Math::round('-3.4'));
     $this->assertEquals('-4', Zend_Locale_Math::round('-3.5'));
     $this->assertEquals(round(-3.5), Zend_Locale_Math::round('-3.5'));
     $this->assertEquals('-4', Zend_Locale_Math::round('-3.6'));
     $this->assertEquals(round(-3.6), Zend_Locale_Math::round('-3.6'));
     $this->assertEquals('-4', Zend_Locale_Math::round('-3.6', 0));
     $this->assertEquals(round(-3.6, 0), Zend_Locale_Math::round('-3.6', 0));
     $this->assertEquals('-1.96', Zend_Locale_Math::round('-1.95583', 2), '', 0.02);
     $this->assertEquals(round(-1.95583, 2), Zend_Locale_Math::round('-1.95583', 2), '', 0.02);
     $this->assertEquals(-1242000, Zend_Locale_Math::round('-1241757', -3), '', 250);
     $this->assertEquals(round(-1241757, -3), Zend_Locale_Math::round('-1241757', -3), '', 250);
     $this->assertEquals(-5.05, Zend_Locale_Math::round('-5.045', 2), '', 0.02);
     $this->assertEquals(round(-5.045, 2), Zend_Locale_Math::round('-5.045', 2), '', 0.02);
     $this->assertEquals(-5.06, Zend_Locale_Math::round('-5.055', 2), '', 0.02);
     $this->assertEquals(round(-5.055, 2), Zend_Locale_Math::round('-5.055', 2), '', 0.02);
 }
开发者ID:ThorstenSuckow,项目名称:conjoon,代码行数:19,代码来源:MathTest.php

示例10: set_include_path

set_include_path(get_include_path() . PATH_SEPARATOR . './library');
// setup Zend autloading, this requires that the library is available via the include_path
require 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
// define float value that will differ between rounding and cutoff
$floatvalue = 1298.85525;
$precision = 2;
$testLocale = 'en_GB';
// setup a fixed locale to get around differeing output formats regarding . and ,
$locale = new Zend_Locale();
$locale->setLocale('en_GB');
Zend_Registry::set('Zend_Locale', $locale);
// what is produced by php round function
// expected result is 1298.86
echo round($floatvalue, $precision);
echo "\n";
// what is produce by Zend_Locale_Math
// expected result is 1298.86
echo Zend_Locale_Math::round($floatvalue, $precision);
echo "\n";
// what is produced by Zend_Locale_Math without specifiying an explicit format
// expected result is 1,298.86
// this will return 1,298.85 instead!
echo Zend_Locale_Format::toNumber($floatvalue, array('precision' => $precision, 'locale' => $locale));
echo "\n";
// what is produced by Zend_Locale_Math with specifiying an explicit format
// expected result is 1,298.86
$format = Zend_Locale_Data::getContent((string) $locale, 'decimalnumber');
echo Zend_Locale_Format::toNumber($floatvalue, array('precision' => $precision, 'locale' => $locale, 'number_format' => $format));
echo "\n";
开发者ID:Tony133,项目名称:zf-web,代码行数:30,代码来源:testcaseRounding.php

示例11: toNumber

    /**
     * Returns a locale formatted number depending on the given options.
     * The seperation and fraction sign is used from the set locale.
     * ##0.#  -> 12345.12345 -> 12345.12345
     * ##0.00 -> 12345.12345 -> 12345.12
     * ##,##0.00 -> 12345.12345 -> 12,345.12
     *
     * @param   string  $input    Localized number string
     * @param   array   $options  Options: number_format, locale, precision. See {@link setOptions()} for details.
     * @return  string  locale formatted number
     */
    public static function toNumber($value, array $options = array())
    {
        // load class within method for speed
        require_once 'Zend/Locale/Math.php';

        $value = Zend_Locale_Math::normalize($value);
        $options = array_merge(self::$_Options, self::checkOptions($options));
        if ($options['locale'] instanceof Zend_Locale) {
            $options['locale'] = $options['locale']->toString();
        }

        // Get correct signs for this locale
        $symbols = Zend_Locale_Data::getList($options['locale'], 'symbols');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        // Get format
        $format = $options['number_format'];
        if ($format === null) {
            $format  = Zend_Locale_Data::getContent($options['locale'], 'decimalnumber');
            if (iconv_strpos($format, ';') !== false) {
                if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
                    $format = iconv_substr($format, iconv_strpos($format, ';') + 1);
                } else {
                    $format = iconv_substr($format, 0, iconv_strpos($format, ';'));
                }
            }
        } else {
            // seperate negative format pattern when available
            if (iconv_strpos($format, ';') !== false) {
                if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
                    $format = iconv_substr($format, iconv_strpos($format, ';') + 1);
                } else {
                    $format = iconv_substr($format, 0, iconv_strpos($format, ';'));
                }
            }

            if (strpos($format, '.')) {
                if (is_numeric($options['precision'])) {
                    $value = Zend_Locale_Math::round($value, $options['precision']);
                } else {
                    if (substr($format, strpos($format, '.') + 1, 3) == '###') {
                        $options['precision'] = null;
                    } else {
                        $options['precision'] = strlen(substr($format, strpos($format, '.') + 1,
                                                              strrpos($format, '0') - strpos($format, '.')));
                        $format = substr($format, 0, strpos($format, '.') + 1) . '###'
                                . substr($format, strrpos($format, '0') + 1);
                    }
                }
            } else {
                $value = Zend_Locale_Math::round($value, 0);
                $options['precision'] = 0;
            }
            $value = Zend_Locale_Math::normalize($value);
        }

        // get number parts
        if (strlen($value) != strlen(Zend_Locale_Math::round($value, 0))) {
            if ($options['precision'] === null) {
                $precstr = iconv_substr($value, strlen(Zend_Locale_Math::round($value, 0)) + 1);
            } else {
                $precstr = iconv_substr($value, strlen(Zend_Locale_Math::round($value, 0)) + 1, $options['precision']);
                if (iconv_strlen($precstr) < $options['precision']) {
                    $precstr = $precstr . str_pad("0", ($options['precision'] - iconv_strlen($precstr)), "0");
                }
            }
        } else {
            if ($options['precision'] > 0) {
                $precstr = str_pad("0", ($options['precision']), "0");
            }
        }

        if ($options['precision'] === null) {
            if (isset($precstr)) {
                $options['precision'] = iconv_strlen($precstr);
            } else {
                $options['precision'] = 0;
            }
        }

        // get fraction and format lengths
        if (strpos($value, '.') !== false) {
            $number = substr((string) $value, 0, strpos($value, '.'));
        } else {
            $number = $value;
        }

        $prec   = call_user_func(Zend_Locale_Math::$sub, $value, $number, $options['precision']);
        if (iconv_strpos($prec, '-') !== false) {
//.........这里部分代码省略.........
开发者ID:jorgenils,项目名称:zend-framework,代码行数:101,代码来源:Format.php

示例12: setOrderSubtotals

 /**
  * Calculate and set order MercadoPago specific subtotals based on data values
  *
  * @param $data
  * @param $order
  */
 public function setOrderSubtotals($data, $order)
 {
     if (isset($data['total_paid_amount'])) {
         $balance = $this->_getMultiCardValue($data, 'total_paid_amount');
     } else {
         $balance = $data['transaction_details']['total_paid_amount'];
     }
     if (isset($data['shipping_cost'])) {
         $shippingCost = $this->_getMultiCardValue($data, 'shipping_cost');
         $order->setBaseShippingAmount($shippingCost);
         $order->setShippingAmount($shippingCost);
     } else {
         $shippingCost = 0;
     }
     $order->setGrandTotal($balance);
     $order->setBaseGrandTotal($balance);
     if ($shippingCost > 0) {
         $order->setBaseShippingAmount($shippingCost);
         $order->setShippingAmount($shippingCost);
     }
     $couponAmount = $this->_getMultiCardValue($data, 'coupon_amount');
     $transactionAmount = $this->_getMultiCardValue($data, 'transaction_amount');
     if ($couponAmount) {
         $order->setDiscountCouponAmount($couponAmount * -1);
         $order->setBaseDiscountCouponAmount($couponAmount * -1);
         $balance = $balance - ($transactionAmount - $couponAmount + $shippingCost);
     } else {
         $balance = $balance - $transactionAmount - $shippingCost;
     }
     if (\Zend_Locale_Math::round($balance, 4) > 0) {
         $order->setFinanceCostAmount($balance);
         $order->setBaseFinanceCostAmount($balance);
     }
     $order->save();
 }
开发者ID:SummaSolutions,项目名称:cart-magento2,代码行数:41,代码来源:Data.php

示例13: getAmount

 public function getAmount()
 {
     return Zend_Locale_Math::round($this->amount, 2);
 }
开发者ID:vinstah,项目名称:body,代码行数:4,代码来源:Price.php

示例14: round

 /**
  * Unified round() implementation for the Datatrans extension
  *
  * @param mixed $value String, Integer or Float
  * @return float
  */
 public function round($value)
 {
     return Zend_Locale_Math::round($value, 2);
 }
开发者ID:voolitels,项目名称:Magento-Datatrans,代码行数:10,代码来源:Data.php

示例15: setType

 /**
  * Set a new type, and convert the value
  *
  * @param  string  $type  New type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty($this->_units[$type])) {
         require_once 'Zend/Measure/Exception.php';
         throw new Zend_Measure_Exception("Type ({$type}) is unknown");
     }
     if (empty($this->_type)) {
         $this->_type = $type;
     } else {
         // Convert to standard value
         $value = $this->_value;
         $prec = 0;
         if (strpos($this->_value, '.') !== false) {
             $prec = strlen(substr($this->_value, strpos($this->_value, '.') + 1));
         }
         if (is_array($this->_units[$this->getType()][0])) {
             foreach ($this->_units[$this->getType()][0] as $key => $found) {
                 switch ($key) {
                     case "/":
                         if ($found != 0) {
                             $value = @call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                         }
                         break;
                     case "+":
                         $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                         break;
                     case "-":
                         $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                         break;
                     default:
                         $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                         break;
                 }
             }
         } else {
             $value = call_user_func(Zend_Locale_Math::$mul, $value, $this->_units[$this->getType()][0], 25);
         }
         // Convert to expected value
         if (is_array($this->_units[$type][0])) {
             foreach (array_reverse($this->_units[$type][0]) as $key => $found) {
                 switch ($key) {
                     case "/":
                         $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                         break;
                     case "+":
                         $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                         break;
                     case "-":
                         $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                         break;
                     default:
                         if ($found != 0) {
                             $value = @call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                         }
                         break;
                 }
             }
         } else {
             $value = @call_user_func(Zend_Locale_Math::$div, $value, $this->_units[$type][0], 25);
         }
         $this->_value = Zend_Locale_Math::round($value, $prec);
         $this->_type = $type;
     }
     return $this;
 }
开发者ID:mtday,项目名称:timesheet-system,代码行数:71,代码来源:Abstract.php


注:本文中的Zend_Locale_Math类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。