如何在Elixir中提高一个数字?

时间:2015-08-15 11:13:59

标签: elixir

如何用Elixir中的指数计算数字?

例如,2 3 将返回8.

5 个答案:

答案 0 :(得分:65)

使用Erlang :math module

:math.pow(2,3) #=> 8.0

如果你想要一个整数:

:math.pow(2,3) |> round #=> 8

答案 1 :(得分:11)

这是一个尾调用优化的幂函数实现:

def  pow(n, k), do: pow(n, k, 1)        
defp pow(_, 0, acc), do: acc
defp pow(n, k, acc), do: pow(n, k - 1, n * acc)

答案 2 :(得分:4)

Integer.pow/2

从 v1.12 开始,Integer.pow/2 是实现此目的的方法。

答案 3 :(得分:3)

如果以2为底并且幂是整数,则可以使用函数Bitwise.bsl进行左移。例如,可以使用以下公式计算2 3

> Bitwise.bsl(1, 3)
8

答案 4 :(得分:-1)

这是有效的 - 当我学到足够的知识以确定它的工作原理时,它会很棒 - 可能与封面下的eval有关:

import React, { PropTypes } from "react";

const AddPost = ({ title, content, auth, handleChange, handleSubmit }) => (
  <form onSubmit={event => handleSubmit(event, title, content, auth.uid)}>
    <input
      type="text"
      placeholder="title"
      value={title}
      onChange={handleChange}
    />
    <input
      type="text"
      placeholder="content"
      value={content}
      onChange={handleChange}
    />
    <input type="submit" value="Post" />
  </form>
);

AddPost.propTypes = {
  title: PropTypes.string,
  content: PropTypes.string,
  auth: PropTypes.object,
  handleChange: PropTypes.func,
  handleSubmit: PropTypes.func
};

export default AddPost;