Сообщение от Brick
|
как разделить допустим число 16000 на 16 000, чтоб оно было числом, а не строкой?
|
Вы можете работать с переменной, а когда нужно форматирование числа, используйте, например, метод toLocaleString.
var a = 16000;
alert(a.toLocaleString("ru"));
Это означает, что вы работаете с числом в виде типа Number, а когда его нужно вывести, например, в интерфейсе программы, то вы будете использовать метод toLocaleString у числа.
Если же вам нужно, например, выводить форматированное число в поле ввода или сохранять его на диск, то вам понадобится его обратно перевести в число. Для этого можно например сконструировать новый тип SeparatedNumber.
class SeparatedNumber extends Number {
constructor(string) {
super(String(string).replace(/\s/g, ""));
}
toString(base) {
const string = super.toString(base);
return string.replace(/([\da-z]{1,3})(?=(?:[\da-z]{3})+(?:\..*|$))/g, "$1 ");
}
}
// пример
var a = new SeparatedNumber(16000);
alert(a);
// пример
var b = new SeparatedNumber("18 000");
alert(b);
С типом SeparatedNumber вы можете работать как с обычным числом, однако в тех местах, где нужно строковое представление, этот тип будет автоматически форматироваться.
Сообщение от Brick
|
разделить число по классам
|
Сообщение от Brick
|
если так? и его как-то упростить?
|
function formatNumber(number) {
var x = ["", "k", "M", "G", "T"], i = 0;
while(number >= 1000 && i++ < x.length)
number /= 1000;
return number.toLocaleString("en", { maximumFractionDigits: 1 }) + x[i];
}
// пример
var a = 16000;
alert(formatNumber(a));