number.php

Go to the documentation of this file.
00001 <?php
00002 /* SVN FILE: $Id: number_8php-source.html 675 2008-12-26 00:27:14Z gwoo $ */
00003 /**
00004  * Number Helper.
00005  *
00006  * Methods to make numbers more readable.
00007  *
00008  * PHP versions 4 and 5
00009  *
00010  * CakePHP(tm) :  Rapid Development Framework <http://www.cakephp.org/>
00011  * Copyright 2005-2008, Cake Software Foundation, Inc.
00012  *                              1785 E. Sahara Avenue, Suite 490-204
00013  *                              Las Vegas, Nevada 89104
00014  *
00015  * Licensed under The MIT License
00016  * Redistributions of files must retain the above copyright notice.
00017  *
00018  * @filesource
00019  * @copyright       Copyright 2005-2008, Cake Software Foundation, Inc.
00020  * @link                http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
00021  * @package         cake
00022  * @subpackage      cake.cake.libs.view.helpers
00023  * @since           CakePHP(tm) v 0.10.0.1076
00024  * @version         $Revision: 675 $
00025  * @modifiedby      $LastChangedBy: gwoo $
00026  * @lastmodified    $Date: 2008-12-25 16:27:14 -0800 (Thu, 25 Dec 2008) $
00027  * @license         http://www.opensource.org/licenses/mit-license.php The MIT License
00028  */
00029 /**
00030  * Number helper library.
00031  *
00032  * Methods to make numbers more readable.
00033  *
00034  * @package     cake
00035  * @subpackage  cake.cake.libs.view.helpers
00036  */
00037 class NumberHelper extends Helper {
00038 /**
00039  * Formats a number with a level of precision.
00040  *
00041  * @param  float    $number A floating point number.
00042  * @param  integer $precision The precision of the returned number.
00043  * @return float Enter description here...
00044  * @access public
00045  */
00046     function precision($number, $precision = 3) {
00047         return sprintf("%01.{$precision}f", $number);
00048     }
00049 
00050 /**
00051  * Returns a formatted-for-humans file size.
00052  *
00053  * @param integer $length Size in bytes
00054  * @return string Human readable size
00055  * @access public
00056  */
00057     function toReadableSize($size) {
00058         switch($size) {
00059             case 0:
00060                 return '0 Bytes';
00061             case 1:
00062                 return '1 Byte';
00063             case $size < 1024:
00064                 return $size . ' Bytes';
00065             case $size < 1024 * 1024:
00066                 return NumberHelper::precision($size / 1024, 0) . ' KB';
00067             case $size < 1024 * 1024 * 1024:
00068                 return NumberHelper::precision($size / 1024 / 1024, 2) . ' MB';
00069             case $size < 1024 * 1024 * 1024 * 1024:
00070                 return NumberHelper::precision($size / 1024 / 1024 / 1024, 2) . ' GB';
00071             case $size < 1024 * 1024 * 1024 * 1024 * 1024:
00072                 return NumberHelper::precision($size / 1024 / 1024 / 1024 / 1024, 2) . ' TB';
00073         }
00074     }
00075 
00076 /**
00077  * Formats a number into a percentage string.
00078  *
00079  * @param float $number A floating point number
00080  * @param integer $precision The precision of the returned number
00081  * @return string Percentage string
00082  * @access public
00083  */
00084     function toPercentage($number, $precision = 2) {
00085         return NumberHelper::precision($number, $precision) . '%';
00086     }
00087 }
00088 ?>