Quelqu'un a-t-il un bon moyen de ronder SO ... P>
etc etc. p>
Merci beaucoup. P>
6 Réponses :
Que diriez-vous (x / 15) * 15? P>
Vous devrez vous assurer que X est un type entier, tout d'abord, cependant ... (ou, au moins, Cast X / 15 à int)
Vous pouvez utiliser une division entière -
int number = 43; int newNumber = number / 15; int rounded = newNumber * 15;
comme méthode d'extension sur la dateTime à utiliser p>
Assurez-vous d'adapter un motif d'usine abstrait quelque part pour un design plus découplé.
Hey, je suis une méthode d'extension junkie. Je n'offre aucune excuse; p
x = x - (x% 15) code> serait une solution qui ne s'appuie pas sur la division entière. P>
Je ne connais pas d'un appel de bibliothèque pour cela (comme .Round (...)), peut-être et une méthode d'extension s'adapterait bien?
J'irais pour une déclaration simple. P>
Si la vitesse est un problème, essayez une instruction de commutation expansée pour chaque valeur. Utilisez des tests d'unités pour voir ce qui est plus rapide si c'est un problème. P>
Pour être complet ... P>
public static class Ext { public static int RoundDown(this int val) { if (val < 0) return 0; if (val < 15) return 0; if (val < 30) return 15; if (val < 45) return 30; return 45; } }
Il pourrait également utiliser un cadre moqueur pour se moquer de l'entier aussi pour une meilleure vérification (plus sans toutes les frais générales de l'allocation entière sur la pile)
euh non ... Le chronométrage est parce que je suppose que c'est sur un site Web et il y a probablement beaucoup de choses en cours, c'est tout ...
mon hypothèse est que 0 est la limite inférieure (59 la tige)
C'est ici que l'opérateur de modulus est très pratique