2010-12-04 4 views
0

Je semble avoir un peu de problème mathématique ici.Est-ce que je fais quelque chose de mal avec mes ordres d'opérations?

Essentiellement ce que je veux faire est d'avoir deux boîtes de groupe remplissant un formulaire entier. Lorsque ce formulaire se charge, je veux prendre deux nombres distincts et les transformer en un pourcentage de la hauteur du formulaire, et ajuster les hauteurs des boîtes de groupe en conséquence. Je pensais que cela aurait travaillé:

Debug.WriteLine(((((programdirs.Length * 100)/totaldirs) * 100)/this.Height) * 100); 

Cependant, il finit toujours par l'impression 0. Est-il possible que c'est arrondir les décimales, puisque je suis d'effectuer des opérations avec des nombres entiers comme? Que puis-je faire pour que le compilateur conserve les calculs dans un nombre à virgule flottante, jusqu'à ce que je veuille l'arrondir à la fin?

Répondre

1

de Nevermind, j'ai répondu à ma propre question: P

J'étais sur la bonne voie quand je pensais que l'utilisation des nombres entiers comme pour mes calculs causerait à couper les décimales. Taper dans un nombre statique, comme 100 pour moi, a fait que le résultat soit toujours un nombre entier, indépendamment de ce que aurait pu être. Donc, c'est en fin de compte, ce que je faisais pour résoudre mon problème:

  Debug.WriteLine(((((programdirs.Length * (float)100)/totaldirs) * (float)100)/this.Height) * (float)100); 

Maintenant, tout ce que je dois faire est autour d'elle.

0

Une autre option pourrait être de changer l'ordre des opérations, qui devrait fonctionner aussi longtemps que vous faites attention à éviter tout débordement:

Debug.WriteLine(programdirs.Length * 100 * 100 * 100/totaldirs/this.Height); 

Vous pouvez déplacer soit la division et de combiner un ou plusieurs 100 valeurs (c.-à remplacer 100 * 100 avec 10000).

+0

Cela rend les choses beaucoup plus simples, merci :) J'ai en fait décidé de changer l'interface. – TGP1994

Questions connexes