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