2016-07-22 90 views
0

壞的說法我有一個簡單的計算:藥劑:(ArithmeticError)的算術表達式

Enum.reduce(1..5, 0, &:math.pow/2) 

但我得到這個錯誤:

** (ArithmeticError) bad argument in arithmetic expression 
    (stdlib) :math.pow(5, 262144.0) 
    (elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3 
    (elixir) lib/range.ex:80: Enumerable.Range.reduce/5 
    (elixir) lib/enum.ex:1477: Enum.reduce/3 

是否有算術計算在藥劑的限制?

+0

你真的想用'pow'減少1..199嗎?這將是一個非常龐大的數字。即使'1..5'也會產生一個大約180,000位的數字([Source](http://www.wolframalpha.com/input/?i=5+%5E+262144.0))。 – Dogbert

+0

我正在學習Elixir,我正在介紹自己的限制。我知道這是一個很大的數字。但我其實需要了解這些限制。順便說一句,180k數字怎麼了?它只是一個很大的數字。 – Farsheed

+0

這只是'1..5'。 '1..10'會產生[this](http://www.wolframalpha.com/input/?i=10%5E9%5E8%5E7%5E6%5E5%5E4%5E3%5E2%5E1)重新嘗試運行'1..199'。 – Dogbert

回答

1

你正試圖計算5^262144 - 這是一個很大數量的erlang救助。這樣的數字甚至不能用浮點數來表示 - 最大浮點數大約是1.7e308

+0

所以我想我必須問,如何計算Erlang中的5^262144? [Here](http://stackoverflow.com/q/38533313/895659) – Farsheed

+0

爲什麼這是不可能的,我想erlang有任意長度的數字(就像python一樣,我可以在那裏做'5 ** 262144'並得到答案) –

+0

@krzyk不可能,你能得到答案? – Farsheed