Округление до степени 10

У меня есть переменная tauMax, которую я хочу округлить в большую сторону до ближайшей степени десяти (1, 10, 100, 1000...). Я использую приведенное ниже выражение, чтобы найти ближайшее целое число к максимальному значению в массиве тау. Я нахожу максимальное значение, потому что пытаюсь вычислить мощность десяти, которая должна быть отсечкой по оси x. По этой причине tauMax равно 756, поэтому я хочу иметь выражение, которое выводит либо 1000, либо 3 (для 10 ^ 3).

tauMax = round(max(tau));

Буду очень признателен за любую помощь!


person Alex Nichols    schedule 20.07.2011    source источник
comment
Вы также можете сделать это, я считаю, исходя из количества цифр.   -  person    schedule 21.07.2011
comment
Это отличная идея. Знаете ли вы, какую команду я бы использовал, чтобы найти количество цифр в заданном числе?   -  person Alex Nichols    schedule 21.07.2011
comment
@Alex Nichols - Поскольку вы говорите о базе 10, просто используйте log10 (см. Мой ответ ниже).   -  person b3.    schedule 21.07.2011
comment
Кажется, есть несколько разных способов сделать это: mathworks.co.jp/matlabcentral/answers/, но другой метод может быть проще.   -  person    schedule 21.07.2011


Ответы (3)


Поскольку вы говорите о базе 10, вы можете просто использовать log10, чтобы получить количество цифр.

Как насчет:

>> ceil(log10(756))

ans =

     3
person b3.    schedule 20.07.2011
comment
Очень хорошо, и работает точно так же, используя python math, как отвечает @steveha. - person vpipkt; 03.10.2018

На самом деле я не использую Matlab, но обычный способ сделать это на любом языке, который я знаю, таков: взять логарифм по основанию 10, затем округлить это число до ближайшего целого числа, а затем вычислить 10 в степени этого числа. В Питоне:

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
person steveha    schedule 20.07.2011
comment
10000 не печатает? - person Nils_M; 16.08.2018
comment
@Nils_M Да, печатает 10000. Спасибо за исправление! Я отредактирую ответ и исправлю комментарий. - person steveha; 17.08.2018

Вы также можете посмотреть исходный код встроенной функции Matlab nextpow2(N) (просто откройте nextpow2.m), чтобы увидеть, как инженеры Mathworks реализовали это для степени 2, и создать новую функцию, адаптирующую этот источник к степени 10. .

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

person Hermann    schedule 23.07.2014