W ramach projektu Formula.js próbuję ponownie zaimplementować funkcję programu Excel w wersji ACCRINT (w języku JavaScript, ale język nie powinien mieć znaczenia). Próbuję znaleźć odpowiedni opis tego, jak powinien działać (szczególnie w odniesieniu do parametru first_interest
), ale nie mógł znaleźć niczego.Jak zaimplementować program ACCRINT
Co ciekawe, Excel, arkusze kalkulacyjne Google, numery Apple, Gnumeric i OpenOffice nie zgadzają się co do sposobu wdrożenia, mimo że wszystkie trzy główne wersje programu Excel (Win, Mac, Web) wydają się ze sobą zgadzać. Na tej blog post można znaleźć trochę więcej kontekstu.
Dziesiątki przypadków testowych i moją obecną (wadliwą) implementację można znaleźć pod numerem here.
Każda pomoc będzie bardzo ceniona!
UPDATE: być jasne, że problem jest nie związane z day count convention, którą realizowanego przy użyciu David Wheeler pseudocode dla YEARFRAC, która sama została potwierdzona przez ponad 32 milionów testów, obejmujących wszystkie pięć opcji bazowych. Problem pochodzi z parametru first_interest
, którego nikt nie rozumie. O ile nam wiadomo, ten parametr jest po prostu ignorowany przez wiele alternatywnych arkuszy kalkulacyjnych, w tym OpenOffice (jest to skomentowane w kodzie źródłowym). A ten parametr naprawdę zachowuje się w dziwny sposób. Jeśli używasz programu Excel i zmienisz jego wartość, zobaczysz, że zmieni on wyniki podane przez funkcję ACCRINT, ale w sposób, który wydaje się chaotyczny. Spróbuj zmienić datę first_interest
na pełny wiek, a zobaczysz, że naliczone odsetki zmieniają się, ale nie za dużo. Naprawdę nie mogę tego zrozumieć. Jeśli ktoś może, jestem wszystkich uszy ...
O nie! Dobre pytanie! Jak mam z tym pogodzić? (+1) –