本文最后更新于2022-07-27,已超过 1年没有更新,如果文章内容、图片或者下载资源失效,请留言反馈,我会及时处理,谢谢!
温馨提示:本文共2503个字,读完预计7分钟。
程序代码如下:
/**
* 格式化金额
* @param int $money
* @param int $len
* @param string $sign
* @return string
*/
function formatMoney($money, $len=2, $sign='¥'){
$negative = $money > 0 ? '' : '-';
$int_money = intval(abs($money));
$len = intval(abs($len));
$decimal = '';//小数
if ($len > 0) {
$decimal = '.'.substr(sprintf('%01.'.$len.'f', $money),-$len);
}
$tmp_money = strrev($int_money);
$strlen = strlen($tmp_money);
for ($i = 3; $i < $strlen; $i += 3) {
$format_money .= substr($tmp_money,0,3).',';
$tmp_money = substr($tmp_money,3);
}
$format_money .= $tmp_money;
$format_money = strrev($format_money);
return $sign.$negative.$format_money.$decimal;
}
/**
* 格式化数字 为 'w'
* @param $number
* @return string
*/
function formatNumber($number)
{
if (empty($number) || !is_numeric($number))
return $number;
$unit = "";
if ($number > 10000) {
$leftNumber = floor($number / 10000);
$rightNumber = round(($number % 10000) / 10000, 2);
// $rightNumber = bcmul(($number % 10000) / 10000, '1', 2);
$number = floatval($leftNumber + $rightNumber);
$unit = "W";
} else {
$decimals = $number > 1 ? 2 : 6;
$number = (float)number_format($number, $decimals, '.', '');
}
return (string)$number . $unit;
}
调用示例:
$formatNumber['a'] = formatNumber(123456789); $formatNumber['b'] = formatNumber(123); $formatNumber['c'] = formatNumber(1234); $formatNumber['d'] = formatNumber(12345); $formatMoney['a1'] = formatMoney(123456789,1,'$'); $formatMoney['a'] = formatMoney(123456789); $formatMoney['b1'] = formatMoney(-1235,1,'$'); $formatMoney['b'] = formatMoney(-1235); $formatMoney['c'] = formatMoney(123456.789); $formatMoney['d'] = formatMoney(-123456.789);
结果:
{
"status": "success",
"code": 200,
"message": "成功",
"data": {
"formatNumber": {
"a": "12345.68W",
"b": "123",
"c": "1234",
"d": "1.23W"
},
"formatMoney": {
"a1": "$123,456,789.0",
"a": "¥123,456,789.00",
"b1": "$-1,235.0",
"b": "¥-1,235.00",
"c": "¥123,456.79",
"d": "¥-123,456.79"
}
},
"error": {}
}