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