61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace app\service; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 精准计算 依赖bc库 | ||
|  |  * | ||
|  |  * Class Math | ||
|  |  * @package app\service | ||
|  |  */ | ||
|  | class Math | ||
|  | { | ||
|  |     // 加法
 | ||
|  |     public static function add(string $num1, string $num2, $scale = 2): string | ||
|  |     { | ||
|  |         return bcadd($num1, $num2, $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 减法
 | ||
|  |     public static function sub(string $num1, string $num2, $scale = 2): string | ||
|  |     { | ||
|  |         return bcsub($num1, $num2, $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 乘法
 | ||
|  |     public static function mul(string $num1, string $num2, $scale = 2): string | ||
|  |     { | ||
|  |         return bcmul($num1, $num2, $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 除法
 | ||
|  |     public static function div(string $num1, string $num2, $scale = 2): string | ||
|  |     { | ||
|  |         return bcdiv($num1, $num2, $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 求余、取模
 | ||
|  |     public static function mod(string $num1, string $num2, $scale = 2): string | ||
|  |     { | ||
|  |         return bcmod($num1, $num2, $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 分转元
 | ||
|  |     public static function fen2Yuan(int $amount): string | ||
|  |     { | ||
|  |         return self::div($amount, '100'); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 元转分
 | ||
|  |     public static function yuan2Fen(string $amount, int $scale = 0): string | ||
|  |     { | ||
|  |         return self::mul($amount, '100', $scale); | ||
|  |     } | ||
|  | 
 | ||
|  |     // 格式化 默认保留小数点后两位
 | ||
|  |     public static function format($amount, int $scale = 2): string | ||
|  |     { | ||
|  |         return number_format($amount, $scale, '.', ''); | ||
|  |     } | ||
|  | } |