Besoin de faire une énumération de type double en c#
Comment puis-je créer une énumération de type double?
Est-ce possible ou dois-je créer une sorte de collection et de hachage?
OriginalL'auteur | 2009-03-17
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire une énumération.
http://msdn.microsoft.com/en-us/library/y94acxy2.aspx
L'une des possibilités:
static
ouconst
.C'est le droit. Je préfère aussi statique vs const.
Quelle est la raison de préférer
static
surconst
?OriginalL'auteur user76035
Je suppose que ça dépend des problèmes que vous voulez aller. Vous peut convertir un double pour une longue, donc si vous avez converti votre double des valeurs aux entiers longs dans un programme séparé, et de sortie les valeurs de constante, vous pouvez ensuite les utiliser dans votre programme.
Je déconseille vivement ce, par la manière, mais parfois, tu dois faire ce que tu dois faire.
Tout d'abord, écrire un programme pour convertir vos doubles à longs:
Maintenant, ajoutez de sortie de votre programme et de créer de l'enum:
Lorsque vous souhaitez tester un double de la valeur contre les enum, vous aurez à appeler
BitConverter.DoubleToInt64Bits()
, et jeté le résultat de votre type enum. Pour convertir l'autre, appelezBitConverter.Int64BitsToDouble()
.OriginalL'auteur Jim Mischel
Non, les énumérations sont essentiellement des valeurs entières.
Je ne sais pas au sujet de votre problème que vous résolvez mais vous pourriez faire un dictionnaire générique.
Bien sûr, la comparaison des doubles, c'est toujours amusant, surtout lorsqu'ils diffèrent chemin vers le bas dans les décimales des lieux. Pourrait être intéressant si vous essayez de comparer les résultats d'un calcul (pour l'égalité) avec une double. Juste une précaution, si c'est ce que vous pourriez avoir à faire.
OriginalL'auteur itsmatt
Types Enum être intégrale types, à l'exception de
char
. Ceci n'inclut pas lesdouble
, de sorte que vous aurez besoin de faire une table de recherche ou d'un ensemble de constantes.Ce tvanfosson dit, c'est que bien que le char est intégrante type qu'il ne peut pas être utilisé comme le type sous-jacent pour un enum.
OriginalL'auteur tvanfosson
Je pense octet, sbyte, short, ushort, int, uint, long, ou ulong sont vos seules options.
Pourquoi, comme une question d'intérêt? Peut-être que nous pouvons travailler autour d'elle.
OriginalL'auteur amaca
Il n'est pas possible d'utiliser le double pour un enum. Consultez l'article MSDN suivant pour une explination de la façon dont les énumérations de travail:
Article MSDN
Voici une citation de l'article qui répond à votre question:
OriginalL'auteur Kelsey
Pourquoi avez-vous besoin d'utiliser un enum de type double?
Si vous avez besoin de sous-valeurs, vous pouvez simplement multiplier le double des valeurs avec une constante de l'opérateur afin de les transformer tous en nombres entiers (et de maintenir le même ratio) et ensuite utiliser le même opérateur pour activer vos valeurs en double par la suite... Si vous multipliez par dizaines ce serait comme de déplacer temporairement le séparateur décimal vers la gauche. Simple, mais efficace.
OriginalL'auteur Stijn Bollen