Округление до степени 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.

http://www.mathworks.it/it/help/matlab/ref/nextpow2.html