Недавний проект требует от нас форматировать сумму в тысячных долях (то есть каждые три цифры разделять запятыми). Предыдущая версия была допущена с моей стороны. Мне очень жаль всех! Внесены изменения. Если все еще есть недостатки, пожалуйста, дайте мне совет!
1. Поддерживает цифры 0–9, разделенные запятыми.
JS-код выглядит следующим образом:
Скопируйте код кода следующим образом:
/**
*JS-форматирование
* @param число Число, которое нужно отформатировать.
* @param d [0-9] через запятую
*/
функция numFormat(число,d) {
var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
REG_NUMBER = /^/d+(./d+)?$/;
d = d || 3; // Если не передано, это 3 знака тысячных.
if(isNumber(номер) || isString(номер) || REG_NUMBER.test(номер)) {
//Сначала преобразуем в строку
вар toString = число + '',
isPoint = toString.indexOf('.'),
префикс, // префикс
суффикс, // суффикс
т = '';
если (isPoint > 0) {
префикс = toString.substring(0,isPoint);
суффикс = toString.substring(isPoint + 1);
}иначе если(isPoint == 0) {
префикс = '';
суффикс = toString.substring(1);
}еще {
префикс = toString;
суффикс = '';
}
если(префикс != '') {
prefixArr = prefix.split('').reverse();
вар isArrayIndex = isArray(d,numArrs);
если (isArrayIndex > -1) {
for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
}
t = t.split("").reverse().join("");
если(суффикс != '') {
вернуть т + "." + суффикс;
}еще {
вернуть т;
}
}еще {
return 'Сколько введенных цифр неверно';
}
}else if(prefix != '' && суффикс == ''){
возвратный префикс;
}else if(prefix == '' && суффикс != ''){
префикс = 0;
возвращаемый префикс + суффикс;
}еще {
вернуть «Произошла ошибка»;
}
}еще {
return 'Число, переданное для форматирования, не соответствует';
}
}
функция isArray(пункт,arrs) {
for(var i = 0, ilen = arrs.length; i < ilen; i++) {
if(item == arrs[i]) {
вернуть я;
}
}
вернуть -1;
}
функция isNumber(число) {
return Object.prototype.toString.apply(number) === '[Номер объекта]';
}
функция isString(число) {
return Object.prototype.toString.apply(number) === ['object String'];
}
Но, похоже, есть несовершенство. Я вызываю console.log(numFormat("1111.00")); и он напрямую выводит на консоль 1111 вместо 1111,00. Другими словами, если десятичная точка равна 0, браузер автоматически сотрет. сбрось последний 0 и все остальное нормально! Я протестировал его, и он в основном соответствует требованиям. Если есть какие-либо недостатки, пожалуйста, дайте мне совет!