VBA
matroz: Witam
Chcę napisać program w VBA do obliczania e z różną dokładnością, jako sumę szeregu 1/n! od 0 to
n. Nie wiem czemu, ale nie działa jak powinien − wklejam:
Sub e()
Dim e As LongLong
Dim silnia As LongLong
n = InputBox("n = ?")
silnia = 1
e = 0
For i = 1 To n
silnia = silnia * i
e = e + 1 / silnia
Next i
Cells(4, 3) = e + 1
End Sub
Co ciekawe, kiedy zamiast
e = e + 1 / silnia
wpiszę
e = e + silnia
to policzy prawidłowo sumę silni. Nie może policzyć sumę odwrotności silni, mimo że kod wygląda
na prawidłowy. Może jakaś wada VBA? Ma ktoś pomysł?
22 sie 23:20
matroz: już wiem − zmieniłem typ zmiennych z longlong na double i śmiga.
22 sie 23:45
matroz: może wiecie czemu nie działa mi typ longlong? mam office 64 bit. więc powinien działac
22 sie 23:51
zombi: Bo longlong to typ dla całkowitych, a double rzeczywiste? przecież masz e = e + 1 / silnia
ułamek, więc nie możesz chyba zadeklarować e jako całkowitej.
22 sie 23:57
matroz: ok, nie wiedziałem że longlong jest dla całkowitych, nigdzie w necie tego nie znalazłem

dzięki
23 sie 00:00