2016-07-22 4 views
0

Ich habe eine einfache Rechnung:Elixir: (ArithmeticError) schlechtes Argument in arithmetischen Ausdruck

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

Aber ich bekomme diese Fehlermeldung:

** (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 

Gibt es eine Begrenzung in Elixir für arithmetische Berechnungen?

+0

Wollten Sie wirklich '1..199' mit' pow' reduzieren? Das wird eine wirklich große Zahl sein. Selbst "1..5" wird eine Zahl mit etwa 180.000 Stellen erzeugen ([Quelle] (http://www.wolframalpha.com/input/?i=5+%5E+262144.0)). – Dogbert

+0

Ich lerne Elixier und stelle mich mit seinen Grenzen vor. Ich wusste, dass es eine große Zahl ist. Aber ich muss die Grenzen wirklich verstehen. Und BTW, was ist mit 180k Ziffern falsch? Es ist nur eine große Anzahl. – Farsheed

+0

Das ist nur '1..5'. '1..10' produziert [dies] (http://www.wolframalpha.com/input/?i=10%5E9%5E8%5E7%5E6%5E5%5E4%5E3%5E2%5E1) und du ' Versuchen, '1..199' zu starten. – Dogbert

Antwort

1

Sie versuchen zu berechnen 5^262144 - es ist so eine große Zahl erlang sperrt aus. Eine solche Zahl kann nicht einmal durch Fließkommazahlen dargestellt werden - der maximale Gleitkommawert ist etwa 1.7e308

+0

Also ich denke, ich muss fragen, wie 5^262144 in Erlang zu berechnen? [Here] (http://stackoverflow.com/q/38533313/895659) – Farsheed

+0

Warum ist es nicht möglich, dachte ich Erlang hat willkürliche Länge Zahlen (genau wie Python, und ich konnte '5 ** 262144 'dort tun und bekam Antwort) –

+0

@krzyk Nicht möglich und Sie konnten die Antwort bekommen? – Farsheed

Verwandte Themen