Возведение в степень десятичного числа десятичного числа?

Это ДЕЙСТВИТЕЛЬНО зависит от того, что вам нужно, чтобы выполнить скрипт bash!

Например, если скрипт bash просто перекликается с некоторым выходом, вы можете просто сделать

docker run --rm -v $(pwd)/mybashscript.sh:/mybashscript.sh ubuntu bash /mybashscript.sh

Another Возможно, вы хотите, чтобы скрипт bash устанавливал какое-то программное обеспечение - скажем, скрипт для установки docker-compose. вы можете сделать что-то вроде

docker run --rm -v /usr/bin:/usr/bin --privileged -v $(pwd)/mybashscript.sh:/mybashscript.sh ubuntu bash /mybashscript.sh

. Но на этом этапе вам действительно нужно знать, что делает скрипт, чтобы разрешить конкретные разрешения, необходимые для вашего хоста изнутри контейнера.

25
задан shsteimer 21 January 2009 в 18:32
поделиться

4 ответа

Чтобы решить мою проблему, я нашел ряд разложений , и их я реализовал для решения уравнения X ^ n = e ^ (n * ln x).

// Adjust this to modify the precision
public const int ITERATIONS = 27;

// power series
public static decimal DecimalExp(decimal power)
{
    int iteration = ITERATIONS;
    decimal result = 1; 
    while (iteration > 0)
    {
        fatorial = Factorial(iteration);
        result += Pow(power, iteration) / fatorial;
        iteration--;
    }
    return result;
}

// natural logarithm series
public static decimal LogN(decimal number)
{
    decimal aux = (number - 1);
    decimal result = 0;
    int iteration = ITERATIONS;
    while (iteration > 0)
    {
        result += Pow(aux, iteration) / iteration;
        iteration--;
    }
    return result;
}

// example
void main(string[] args)
{
    decimal baseValue = 1.75M;
    decimal expValue = 1/252M;
    decimal result = DecimalExp(expValue * LogN(baseValue));
}

Функции Pow () и Factorial () просты, потому что степень всегда int (внутри ряда степеней).

11
ответ дан Kevin 16 October 2019 в 07:11
поделиться

Это должно быть самым быстрым для положительного целого показателя и десятичной основы:

// From http://www.daimi.au.dk/~ivan/FastExpproject.pdf
// Left to Right Binary Exponentiation
public static decimal Pow(decimal x, uint y){
    decimal A = 1m;
    BitArray e = new BitArray(BitConverter.GetBytes(y));
    int t = e.Count;

    for (int i = t-1; i >= 0; --i) {
        A *= A;
        if (e[i] == true) {
            A *= x;
        }
    }
    return A;
}
7
ответ дан athspk 16 October 2019 в 07:11
поделиться

Я думаю, что это во многом зависит от числа, которое Вы планируете на включении. Если и 'b' не будет 'хорошее' число тогда, то Вы, вероятно, получите значение, которое не завершается, который невозможно сохранить и если C# BigDecimal ведет себя вообще как Java BigDecimal, это, вероятно, выдает исключение в таком случае.

0
ответ дан Kevin Loney 16 October 2019 в 07:11
поделиться

Вы уверены, что действительно хотите это сделать? Умножение decimal примерно в 40 раз медленнее, чем double, поэтому я ожидаю, что десятичное число Math.Pow() будет практически неприменимо.

Однако, если вы ожидаете только целочисленные полномочия, я предлагаю вам использовать алгоритм вычислений на основе целочисленных значений, который уже обсуждался здесь в SO.

-3
ответ дан Dmitri Nesteruk 16 October 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: