Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2019, 20:21
Аватар для Brick
Профессор
Отправить личное сообщение для Brick Посмотреть профиль Найти все сообщения от Brick
 
Регистрация: 16.07.2018
Сообщений: 295

разделить число на классы, упрощенная запись
как разделить допустим число 16000 на 16 000, чтоб оно было числом, а не строкой?
и ещё
разделить число по классам
k - 000
M - 000 000
G - 000 000 000
допустим у нас 18000, отображается 18k
?
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2019, 20:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Brick
16 000, чтоб оно было числом, а не строкой
var num = 16 000;


Выполняя этот код смотрите в консоль. Что она сообщает? Какой вывод из этого?
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2019, 22:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Brick
допустим у нас 18000, отображается 18k
jquery-abbrnum
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2019, 22:57
Аватар для Brick
Профессор
Отправить личное сообщение для Brick Посмотреть профиль Найти все сообщения от Brick
 
Регистрация: 16.07.2018
Сообщений: 295

если так? и его как-то упростить?
<script>
function N()
{
var K=document.getElementById('16').innerHTML;
if (K>=1000)
{
q=Math.round((K/1000));
w=q+"k";
} 
else if (K>=1000000)
{
q=Math.round((K/1000000));
w=q+"M";
}
else if (K>=1000000000)
{
q=Math.round((K/1000000000));
w=q+"G";
}
}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 22.08.2019, 23:10
Аватар для Brick
Профессор
Отправить личное сообщение для Brick Посмотреть профиль Найти все сообщения от Brick
 
Регистрация: 16.07.2018
Сообщений: 295

вариант 2
var str = "3830000";
q=str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
результат: q=3 830 000
НО! q - строка, как её числом сделать, назад?
Ответить с цитированием
  #6 (permalink)  
Старый 22.08.2019, 23:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Brick
как её числом сделать,
стереть пропуски, преобразовать в число.
Ответить с цитированием
  #7 (permalink)  
Старый 23.08.2019, 10:34
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от 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));

Последний раз редактировалось Malleys, 23.08.2019 в 12:50.
Ответить с цитированием
  #8 (permalink)  
Старый 23.08.2019, 13:49
Аватар для Brick
Профессор
Отправить личное сообщение для Brick Посмотреть профиль Найти все сообщения от Brick
 
Регистрация: 16.07.2018
Сообщений: 295

спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать эскпоненциальную запись числа alex-romanov Javascript под браузер 4 31.03.2019 12:04
Угадай число. Помогите написать скрипт и по возможности объяснить, как работает Vadim Zhizherin Общие вопросы Javascript 3 04.05.2018 21:09
Разделить число на разряды simple Events/DOM/Window 12 23.10.2015 20:48
Разделить число с пробелом namez Общие вопросы Javascript 3 01.01.2013 20:39
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13