yarkov
@yarkov
Помог ответ? Отметь решением.

Как выводить нужный символ в зависимости от числа?

Мне надо числа больше 10000 сокращать и выводить так:

Для примера возьмем число 12000
Если число между 11500 и 12000, то выводить ≈12 т.
Если число между 12000 и 12500, то выводить >12 т.
Если число равно 12000, то выводить 12 т.

UPD: не надо код, подскажите алгоритм
  • Вопрос задан
  • 123 просмотра
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
не надо код, подскажите алгоритм

Думаю, это уже не актуально - раз вы опубликовали собственный вариант. Так что просто код:

function shorten(val) {
  if (val <= 10000) {
    return val.toString();
  }

  const thousands = val / 1000;
  const rounded = Math.round(thousands);
  const deviation = Math.sign(thousands - rounded);

  return `${[ '≈', '', '>' ][deviation + 1]}${rounded} т.`;
}
Ответ написан
yarkov
@yarkov Автор вопроса, куратор тега JavaScript
Помог ответ? Отметь решением.
Сам спросил - сам отвечу ))

function formatNumber(value)
{
    return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ");
}

function shortNumber(price)
{
		const base = +formatNumber(price).split(' ')[0];

    if (+(`${base}000`) < price && price <= +(`${base}500`)) {
    		return `>${base} т.`;
    } else if (price > (+(`${base}000`) + 500)) {
    		return `≈${base+1} т.`;
    } else if (+(`${base}000`) === price) {
    		return `${base} т.`;
    }
}

shortNumber(12000) // 12 т.
shortNumber(12500) // >12 т.
shortNumber(12600) // ≈13 т.
Ответ написан
kshshe
@kshshe
Frontend developer
Можно что-то такое:
function formatNumber(number) {
	if (number <= 1e4) return number.toString();
	const rest = (number / 1e3) % 1;
	const thousands = Math.floor(number / 1e3) + " т";
	if (rest === 0) {
		return thousands;
	}
	if (rest < 0.5) {
		return ">" + thousands;
	}
	if (rest === 0.5) {
		return ">" + thousands;
	}
	if (rest > 0.5) {
		return "≈" + thousands;
	}
}

Алгоритм, думаю, понятен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы