acf
This commit is contained in:
63
plugins/system/nrframework/NRFramework/Helpers/Number.php
Normal file
63
plugins/system/nrframework/NRFramework/Helpers/Number.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user