Files
conservatorio-tomadini/plugins/system/nrframework/NRFramework/Helpers/Number.php
2024-12-31 11:07:09 +01:00

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