Esta pregunta fue originalmente publicada en Stackoverflow:
Como parte del proyecto Formula.js, estoy intentando reimplantar la función ACCRINT de Excel (en JavaScript, pero el lenguaje no debería importar). He estado tratando de encontrar una descripción adecuada de cómo se supone que funciona (especialmente con respecto a la primer_interés parámetro), pero no pude encontrar nada.
Curiosamente, Excel, las hojas de cálculo de Google, Apple Numbers, Gnumeric y OpenOffice no están de acuerdo en la forma de implementarlo, aunque las tres versiones principales de Excel (Win, Mac, Web) parecen estar de acuerdo entre sí. Se puede encontrar algo más de contexto en este entrada en el blog .
Se pueden encontrar docenas de casos de pruebas y mi implementación actual (defectuosa) aquí .
¡Cualquier ayuda (código, pseudocódigo o descripción) sería muy apreciada!
ACTUALIZACIÓN: para ser claros, la cuestión es no relacionado con la convención de conteo de días, que implementamos utilizando la pseudocódigo para YEARFRAC que a su vez fue validado por más de 32 millones de pruebas, cubriendo las cinco opciones básicas. La cuestión viene de la first_interest
que nadie parece entender realmente. Hasta donde podemos decir, este parámetro es simplemente ignorado por muchas hojas de cálculo alternativas, incluyendo OpenOffice (está comentado en el código fuente). Y este parámetro realmente se comporta de maneras extrañas. Si usas Excel y cambias su valor, verás que cambiará los resultados dados por la función ACCRINT, pero de formas que parecen caóticas. Intenta cambiar el first_interest
...en un siglo completo, y verá que el interés acumulado cambia, pero no por mucho. Realmente no puedo darle sentido a eso. Si alguien puede, soy todo oídos, porque ACCRINT debe ser usado para calcular el interés de billones o trillones de dólares cada año, y encuentro fascinante que nadie fuera de unas pocas personas en Microsoft parece saber cómo se supone que funciona realmente...