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