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, '.', '');
 | |
|     }
 | |
| }
 |