Если разброс по размерности не очень велик, то можно всё приводить к одним единицам измерений и преобразовывать для вывода в любые другие.
Если разброс значителен, то можно создать объект, в котором помимо значения, будет храниться приставка из системы СИ. Так же можно дописать функции преобразования от текущей приставки к любой другой.
Но нельзя закрывать глаза на точность вычислений. т.к. в случае, когда речь идет о значениях с большой разрядностью, числа будут храниться в виде экспоненциальной записи. А это означает, что у вас будет некоторое ограничение на количество значащих цифр в числе (для js, если не ошибаюсь 21цифра).
В качестве альтернативы, если значения всё же выходят за пределы 21 значащего разряда, можно использовать запись числа в виде строки и, соответственно, строковую арифметику.