Question

Ceux d'entre vous qui sont encore modérément knowledgable des mathématiques rira probablement, mais je ne me rappelle pas ce que la plupart des règles de notation en mathématiques et de l'aide que je besoin de conversion en code C ce. Votre aide est grandement appréciée:

                                         214
          10,000 {(10,000 × [1+.0599/365]   )} +300
answer = ────────────────────────────────────────────
                                   214
                     .1+(1+(i/365))
Était-ce utile?

La solution

Vous cherchez un programme de traduction pour vous, ou tout simplement une unique conversion? Si c'est juste un hors conversion, ce n'est pas excitant.

En supposant que je l'ai lu correctement votre syntaxe:

double ans = 10000 * (10000 * pow(1.0 + 0.0599 / 365, 214) + 300;
ans /= (0.1 + pow(1.0 + (i / 365.0), 214));

Je dirai, cependant, que vous pourriez avoir un problème avec élever les choses à ce haut d'un exposant et en divisant. Il est plus probable que vous devrez traduire par des journaux et faire vos calculs dans l'espace de journal, et convertir ensuite.

Qu'est-ce qui pourrait ressembler à:

double lognumerator = log(10000) + log(10000) + 214 * log(1 + 0.0599 / 365);
double logdenominator = log(0.1 + exp(214 * log(1.0 + (i / 365.0))));
double ans = exp(lognumerator - logdenominator) + exp(log(300) - logdenominator);

L'utilisation du journal peut vous empêcher de frapper underflow, que vous pouvez très bien frappé avec ces types de calculs.

Autres conseils

Simple -. Juste quelques erreurs communes à surveiller

Mettre un 0,0 après les numéros de constante (en particulier dans le dénominateur), de sorte que les friandises « c » du calcul comme flottant mathématiques à virgule plutôt que de nombre entier.
En 'C' est égal à 0 100/1000 100 / 1000.0 est 0,1

Utilisez les crochets liberally- ne font pas confiance se souvenir des règles de priorité.

Vous devez utiliser * partout pour la multiplication 3 (1 + 2) n'est pas une multiplication.

La fonction pow (x, y) est utilisé pour x ^ y. compilateurs C moderne ont des versions optimisées où y est un nombre entier, de sorte que x ^ 2 est beaucoup plus rapide que x ^ 2,0

Vous cherchez la fonction pow(x,y) pour calculer la puissance?

(10000.0 ( ( 10000.0 * pow(1 + 0.0599/365.0, 214.0))) + 300.0 ) / (1 + pow(1 + i/365.0, 214.0))

Je crois que je suis arrivé ce droit. :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top