需要在c#中进行double类型的枚举

如何创建double类型的枚举?

是否有可能或者我必须创建某种集合和哈希?

你不能把它作为枚举。

http://msdn.microsoft.com/en-us/library/y94acxy2.aspx

可能性之一:

public static class MyPseudoEnum { public static readonly double FirstVal = 0.3; public static readonly double SecondVal = 0.5; } 

我想这取决于你想要多少麻烦。 您可以将double转换为long,因此如果您在单独的程序中将double值转换为long整数并输出常量值,则可以在程序中使用它们。

顺便说一下,我强烈反对这一点,但有时你必须做你必须做的事情。

首先,编写一个程序将您的双打转换为多头:

  Console.WriteLine("private const long x1 = 0x{0:X16}L;", BitConverter.DoubleToInt64Bits(0.5)); Console.WriteLine("private const long x2 = 0x{0:X16}L;", BitConverter.DoubleToInt64Bits(3.14)); 

现在,将该输出添加到您的程序并创建枚举:

  private const long x1 = 0x3FE0000000000000L; private const long x2 = 0x40091EB851EB851FL; enum MyEnum : long { val1 = x1, val2 = x2 } 

如果要针对枚举测试双值,则必须调用BitConverter.DoubleToInt64Bits() ,并将结果转换为枚举类型。 要转换另一种方式,请调用BitConverter.Int64BitsToDouble()

不,枚举本质上是整数值。

我不知道你正在解决的特殊问题,但你可以做一个通用字典。

当然,双打的比较总是很有趣,特别是当它们在小数位上不同时。 如果您尝试将计算结果(相等)与已知双精度进行比较,可能会很有趣。 请注意,如果这是您可能需要做的事情。

枚举类型必须是整数类型,但char除外。 这不包括double ,因此您需要创建查找表或一组常量。

我认为byte,sbyte,short,ushort,int,uint,long或ulong是你唯一的选择。

为什么,感兴趣? 也许我们可以解决它。

枚举不能使用double。 有关枚举如何工作的详细信息,请参阅以下MSDN文章:

MSDN文章

以下是回答您问题的文章的引用:

每个枚举类型都有一个底层类型,除了char之外,它可以是任何整数类型。 枚举元素的默认基础类型是int。

为什么需要使用double类型的枚举?

如果您需要子值,您可以将double值与常量运算符相乘以将它们全部转换为整数(并保持相同的比率),然后使用相同的运算符将值转回双精度值…如果您乘以通过几十个,就像暂时将小数点分隔符向左移动一样。 简单但有效。