Как привести в человекопонятный вид единицы измерений?

Допустим есть разные величины 0.000003 кг, 100500 гр и т.д. Вообщем они не сильно удобочитаемы, хотелось бы готовый элегантный алгоритм для преобразования какого вида 0.000003 кг = 3мг или наоборот 100500гр = 100.5кг Причём хорошо бы для разных величин, используя входной сортированный массив, например:
var measure = [
  {k:"гр",v:1000},
  {k:"кг",v:1},
  {k:"т",v:0.001}
];
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Мой вариант
Теперь к любой единице будет привязан
Ответ написан
Комментировать
@crazywu
Если разброс по размерности не очень велик, то можно всё приводить к одним единицам измерений и преобразовывать для вывода в любые другие.
Если разброс значителен, то можно создать объект, в котором помимо значения, будет храниться приставка из системы СИ. Так же можно дописать функции преобразования от текущей приставки к любой другой.
Но нельзя закрывать глаза на точность вычислений. т.к. в случае, когда речь идет о значениях с большой разрядностью, числа будут храниться в виде экспоненциальной записи. А это означает, что у вас будет некоторое ограничение на количество значащих цифр в числе (для js, если не ошибаюсь 21цифра).
В качестве альтернативы, если значения всё же выходят за пределы 21 значащего разряда, можно использовать запись числа в виде строки и, соответственно, строковую арифметику.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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