Математическая логика c, преобразование масштабируемых чисел в проценты - PullRequest
0 голосов
/ 04 февраля 2020

У меня возникли проблемы с поиском лучшего способа go по этому поводу. Я хочу отобразить процент 0-100. Мой вход (X) это расстояние в метрах. Чем ближе X к 0, я хочу, чтобы процент был ближе к 100.

Моя проблема в том, что человек должен знать, приближается ли он к 0. Независимо от того, как далеко находится диапазон. Поэтому, если они находятся на расстоянии 10000 метров и достигают 9900 метров, мне нужно увеличить процент. Но то же самое, если они находятся на расстоянии 50 метров и достигают 45 метров.

Сейчас я делаю

100 - ((playerDistance / max) * 100)

, где max - это максимальное значение метра, которое может быть у кого-то. что для моей ситуации составляет около 300 000. Это работает, если они путешествуют далеко. Но как только они преодолевают пару тысяч метров, они теряют всю точность, так как долго будут на 99%.

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете применить любую функцию, которая имеет значение 1 (100%) для аргумента 0 и плавно уменьшается.

Пара примеров (синтаксис Python)

100.0 * math.exp( - dist / 1000.0)
100.0 * math.pow(1 + dist, -0.3)

Обратите внимание, что вы не можете предоставить целочисленные процентные значения, охватывающие весь необходимый диапазон, поэтому вы должны показать как минимум три десятичных знака после точки (например, 54.321).

Также обратите внимание, что подход экспоненты обеспечивает равные процентные приращения для равных distance1/distance2 крыс ios

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...