| 

.NET C# Java Javascript Exception

1
Kann mir jemand sagen warum die Schleife nicht funktioniert?

int i=1
prod=1
while(i<=100){prod=prod*i,i=i+1}
println(prod)
News:
18.09.2012
Coolmen1968 1 1
Floyd 14,6k 3 9
Warum sagst Du uns denn nicht mal, was nicht funktioniert? Gibt es eine Fehlermeldung, stimmt das Ergebnis nicht?
Aber Matthias hat Dich ja vermutlich schon auf die Lösung gebracht. ;)
Xantiva 19.09.2012
Vielen dank für die schnelle Hilfe!
Das Ergebnis wird mit 0 angezeigt.
Coolmen1968 19.09.2012
1 Antwort
0
Wenn Du den Wert von 100! ausrechnen möchtest, solltest Du eine Vorstellung davon haben, in welcher Größenordnung das Ergebnis liegt, um den passenden Datentyp zu wählen. Ich kenne mich mit groovy nicht aus, aber es sieht so aus, als würdest Du einen normalen integer benutzen. Der kann dieses Ergebnis bei weitem nicht fassen. Entweder bekommst Du eine Exception wegen Wertebereichsüberschreitung, oder bei der Multiplikation wird stillschweigend gekürzt, und dann ist das Ergebnis schlicht falsch.

Eventuell (anhand der groovy-Doku prüfen) könntest Du mit double durchkommen, das Ergebnis wird dann aber nicht in allen Stellen genau sein. Wenn Du wirklich alle 158 Stellen des Ergebnisses brauchst, dann mußt Du nach etwas wie BigInteger suchen.
18.09.2012
Matthias Hlawatsch 13,2k 4 9

Stelle deine Groovy-Frage jetzt!