63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @author          Tassos Marinos <info@tassos.gr>
 | |
|  * @link            https://www.tassos.gr
 | |
|  * @copyright       Copyright © 2024 Tassos All Rights Reserved
 | |
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
|  */
 | |
| 
 | |
| namespace NRFramework\Helpers;
 | |
| 
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| class Number
 | |
| {
 | |
| 	/**
 | |
| 	 * Converts a number into a short version, eg: 1000 -> 1k
 | |
| 	 *
 | |
| 	 * @param	Number		$n			The number to create the shorter version
 | |
| 	 * @param	integer		$precision	
 | |
| 	 * 
 | |
| 	 * @return	string		The shorter version of the given number
 | |
| 	 */
 | |
| 	public static function toShortFormat($n, $precision = 1)
 | |
| 	{
 | |
| 		if ($n < 900)
 | |
| 		{
 | |
| 			// 0 - 900
 | |
| 			$n_format = number_format($n, $precision);
 | |
| 			$suffix = '';
 | |
| 		} else if ($n < 900000)
 | |
| 		{
 | |
| 			// 0.9k-850k
 | |
| 			$n_format = number_format($n / 1000, $precision);
 | |
| 			$suffix = 'K';
 | |
| 		} else if ($n < 900000000)
 | |
| 		{
 | |
| 			// 0.9m-850m
 | |
| 			$n_format = number_format($n / 1000000, $precision);
 | |
| 			$suffix = 'M';
 | |
| 		} else if ($n < 900000000000)
 | |
| 		{
 | |
| 			// 0.9b-850b
 | |
| 			$n_format = number_format($n / 1000000000, $precision);
 | |
| 			$suffix = 'B';
 | |
| 		} else
 | |
| 		{
 | |
| 			// 0.9t+
 | |
| 			$n_format = number_format($n / 1000000000000, $precision);
 | |
| 			$suffix = 'T';
 | |
| 		}
 | |
| 	
 | |
| 		// Remove unecessary zeroes after decimal. "1.0" -> "1"; "1.00" -> "1"
 | |
| 		// Intentionally does not affect partials, eg "1.50" -> "1.50"
 | |
| 		if ($precision > 0)
 | |
| 		{
 | |
| 			$dotzero = '.' . str_repeat( '0', $precision );
 | |
| 			$n_format = str_replace( $dotzero, '', $n_format );
 | |
| 		}
 | |
| 	
 | |
| 		return $n_format . $suffix;
 | |
| 	}
 | |
| } |