Expoentes java sem poder matemático

Não é supereficiente, mas deve fazer o trabalho.

pow (int base, int exp) { total longo = 1; int i = 1; enquanto (i <= exp) { total * = base; i ++; } retorno total;}

eu preferia

Math.pow ()

método para qualquer caso de uso do mundo real, a menos que você esteja perguntando por razões acadêmicas. Você pode olhar para a implementação real do JDK aqui (começa na linha 1511):

Fonte para java.lang.StrictMath

Sim, você pode escrever sua função para isso,

potência dupla (duplo d, int n) { duplo p = 1; para (int i = 0; i p = p * d; return (p);}

Eu acho que isso é mais rápido do que a função Math.pow. Mas você só pode obter os poderes de inteiros positivos.

Espero que ajude.

Você também pode usar o tipo de dados duplo para a variável 'dígito'. Isso pode dar uma resposta precisa.

dígito duplo = 3;

Isso ocorre porque o tipo de dado de retorno para a função Math.pow é duplo. Qualquer mudança explícita pode causar problemas.

Além disso, se você não quiser usar esta função, você sempre pode usar o método normal de multiplicação do número por si mesmo pelo não. de vezes que você deseja aumentá-lo.

Por exemplo. 10 ^ 3 = 1000;

int a = 10, b = 0;

b = a * a * a; SAÍDA: 1000

Aqui, não há compulsões para usar um tipo de dado específico, pois nenhuma função é usada para a operação aritmética.

Espero que isso tenha sido útil.

Você pode simplesmente multiplicar isso muitas vezes. Você sabe, 10 * 10 * 10. Se quiser variar o expoente, você pode fazer isso em um loop:

int MyPow (int base, int expoent){ resultado int = 1; para (int i = 0; i resultado * = base; resultado de retorno;}

Embora, honestamente, eu me sentisse meio nojento só de escrever isso. A ideia de que Math.pow “não é bom em termos de desempenho” é ridícula em muitos níveis.

  1. Não importa em seu caso de uso. Posso dizer isso com toda a confiança, porque se importasse, você não estaria fazendo esse tipo de pergunta;
  2. Estamos falando de tempos minúsculos aqui. Abaixo de um milissegundo. Se você tiver um problema de desempenho, não é por causa de Math.pow;
  3. Em muitas situações, eu esperaria que fosse mais rápido do que as abordagens baseadas em loop / multiplicação primitivas - há vários truques que reduzem a complexidade do tempo abaixo de O (n), que é improvável que você saiba, a menos que você esteja especificamente tentando otimizá-lo .