20000000 => 20кк.
15000 => 15k
Написал замену последних нулей, а как сделать всех ?
num.toString().replace(/0{3}$/, 'k')
num.toString().replace(/0{3}$/, 'k')
Цитата (Kusss @ 26.12.2019 - 11:57) |
Написал замену последних нулей, а как сделать всех ? |
num.toString().replace(/0{3,}$/, 'k')
// 1. сначала заменяем /000$/ на khttps://jsbin.com/lakudasuvi/edit?js,console
num = num.replace(/000$/, 'k');
// 2. потом заменяем все /000k/ на kk
while (/000k/.test(num)) {
num = num.replace(/000k/, 'kk');
}
Цитата (Valick @ 26.12.2019 - 09:45) |
Дядя Коля, есть подозрение, что с такой математикой ты работаешь в нашей бухгалтерии)) У них тоже всё очень просто)) |
function repK(m) {
return Array(m.length / 3 + 1).join('k');
}
num.toString().replace(/(0{3})+$/, repK);
let num = 20000000,
k = '';
for (i = num.toString().length -3; i >= 0 ; i = i - 3){
if (num.toString().substr(i,3) == '000')
k += 'k';
else
break;
}
if (k.length > 0)
num = num/Math.pow(1000, k.length) + k;
console.log(num);
Цитата (twin @ 26.12.2019 - 14:23) |
но что за число 2300k? |
num.toString().replace(/(0{3})+$/, function(m) {
return 'k'.repeat(m.length / 3);
});
Цитата (twin @ 26.12.2019 - 14:02) |
repeat не работает в IE |
var n = 20000000;
console.log( (n +'').split('').reverse().join('').replace(/0{3}/g, 'k').split('').reverse().join('') );
Цитата (twin @ 26.12.2019 - 13:23) |
Бяда такого подхода, что нули то оно заменит, но что за число 2300k? Еще запятые нужно учесть. Разряд тобишь. Это всех вариантов касаемо, не только моего. |