Округление до степени 10
у меня есть переменная, tauMax
, что я хочу круглые до до ближайшей степени десяти (1, 10, 100, 1000...). Я использую приведенное ниже выражение, чтобы найти ближайшее целое число к максимальному значению в массиве tau. Я нахожу максимальное значение, потому что я пытаюсь вычислить мощность десяти, которая должна быть отсечением оси Х. В этой причине tauMax равен 756, поэтому я хочу иметь выражение, которое выводит либо 1000, либо 3(для 10^3).
tauMax = round(max(tau));
Я был бы очень признателен любая помощь!
3 ответов
поскольку вы говорите о базе 10, вы можете просто использовать log10
чтобы получить количество цифр.
Как насчет:
>> ceil(log10(756))
ans =
3
Я действительно не делаю Matlab, но обычный способ сделать это на любом языке, который я знаю: возьмите логарифм базы 10, затем округлить это число до ближайшего целого числа, а затем вычислить 10 в степени этого числа. В Python:
from math import ceil, log
def ceil_power_of_10(n):
exp = log(n, 10)
exp = ceil(exp)
return 10**exp
>>> print(ceil_power_of_10(1024)) # prints 10000
вы также можете посмотреть на источник встроенной функции Matlab nextpow2 (N) (просто откройте nextpow2.m) посмотреть, как инженеры Mathworks реализовали это для мощности 2 и создать новую функцию, адаптирующую этот источник к мощности 10.