本文最后更新于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": {}
}