JavaScript代码
function addChineseUnit (number, decimalDigit) {
var temp1 = number.toString();
var temp2 = '';
if(temp1.substring(0, 1) === "-"){
number = Number(number.toString().substring(1));
temp2 = '-';
}
decimalDigit = decimalDigit == null ? 2 : decimalDigit;
var integer = Math.floor(number);
var digit = getDigit(integer);
// ['个', '十', '百', '千', '万', '十万', '百万', '千万'];
var unit = [];
if (digit > 3) {
var multiple = Math.floor(digit / 8);
if (multiple >= 1) {
var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
unit.push(addWan(tmp, number, 8 * multiple, decimalDigit));
for (var i = 0; i < multiple; i++) {
unit.push('亿');
}
return temp2 + unit.join('');
} else {
return temp2 + addWan(integer, number, 0, decimalDigit);
}
} else {
return temp2 + number;
}
}
function getDigit (integer) {
var digit = -1;
while (integer >= 1) {
digit++;
integer = integer / 10;
}
return digit;
}
为数字加上单位:万或亿
/**
* 为数字加上单位:万或亿
*
* 例如:
* 1000.01 => 1000.01
* 10000 => 1万
* 99000 => 9.9万
* 566000 => 56.6万
* 5660000 => 566万
* 44440000 => 4444万
* 11111000 => 1111.1万
* 444400000 => 4.44亿
* 40000000,00000000,00000000 => 4000万亿亿
* 4,00000000,00000000,00000000 => 4亿亿亿
*
* @param {number} number 输入数字.
* @param {number} decimalDigit 小数点后最多位数,默认为2
* @return {string} 加上单位后的数字
*/
function addWan (integer, number, mutiple, decimalDigit) {
var digit = getDigit(integer);
if (digit > 3) {
var remainder = digit % 8;
if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’
remainder = 4;
}
return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '万';
} else {
return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit);
}
}
显示结果
123536.8546 保留2位 ---> 12.35万
-12315615161536.85146 保留4位 ---> -12.3156万亿
1236.8546 保留2位 ---> 1236.8546
完整Demo
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
/**
* 为数字加上单位:万或亿
*
* 例如:
* 1000.01 => 1000.01
* 10000 => 1万
* 99000 => 9.9万
* 566000 => 56.6万
* 5660000 => 566万
* 44440000 => 4444万
* 11111000 => 1111.1万
* 444400000 => 4.44亿
* 40000000,00000000,00000000 => 4000万亿亿
* 4,00000000,00000000,00000000 => 4亿亿亿
*
* @param {number} number 输入数字.
* @param {number} decimalDigit 小数点后最多位数,默认为2
* @return {string} 加上单位后的数字
*/
function addWan (integer, number, mutiple, decimalDigit) {
var digit = getDigit(integer);
if (digit > 3) {
var remainder = digit % 8;
if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’
remainder = 4;
}
return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '万';
} else {
return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit);
}
}
function getDigit (integer) {
var digit = -1;
while (integer >= 1) {
digit++;
integer = integer / 10;
}
return digit;
}
function addChineseUnit (number, decimalDigit) {
var temp1 = number.toString();
var temp2 = '';
if(temp1.substring(0, 1) === "-"){
number = Number(number.toString().substring(1));
temp2 = '-';
}
decimalDigit = decimalDigit == null ? 2 : decimalDigit;
var integer = Math.floor(number);
var digit = getDigit(integer);
// ['个', '十', '百', '千', '万', '十万', '百万', '千万'];
var unit = [];
if (digit > 3) {
var multiple = Math.floor(digit / 8);
if (multiple >= 1) {
var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
unit.push(addWan(tmp, number, 8 * multiple, decimalDigit));
for (var i = 0; i < multiple; i++) {
unit.push('亿');
}
return temp2 + unit.join('');
} else {
return temp2 + addWan(integer, number, 0, decimalDigit);
}
} else {
return temp2 + number;
}
}
$(function(){
$("#div1").text('123536.8546 保留2位 ---> '+addChineseUnit (123536.8546,2));
$("#div2").text('-12315615161536.85146 保留4位 ---> '+addChineseUnit(-12315615161536.85146,4));
$("#div3").text('1236.8546 保留2位 ---> '+addChineseUnit (1236.8546,2));
});
</script>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</body>
</html>