【发布时间】:2017-10-31 23:36:19
【问题描述】:
在 this question 之后的 VB 类的公共常量的初始化中使用了指数运算符 ^。
Public Const MaxValue As Double = MaxMantissa * (2 ^ MaxExponent)
我正在将该类转换为 C#。但是我发现 C# 没有相同的运算符(^ 仍然是一个运算符,但只是按位异或)。
Math.Pow() 对运算符来说是given as an alternative,但不能在常量表达式中使用。那么如何在 C# 中使用指数表达式初始化一个常量呢?
(我不使用值而不是表达式,因为表达式中的值也是常量,来自不同的地方。MaxExponent 来自基类,MaxMantissa 在每个派生类中都不同。此外还有在每个派生类中有多个这样的常量,例如MaxPositiveValue、MinPositiveValue、MinNegativeValue、MaxNegativeValue等)
【问题讨论】:
-
C# 没有幂运算符。
-
@Tvde1 是的,我在问题中已经说过了。我在问是否有常量表达式的替代方法。
-
<<在有限的情况下有效,除了你运气不好 -
@harold 好主意,但仅适用于整数(不能对双精度数 AFAIK 进行按位运算)
-
readonly是一个选项吗?public static readonly double MaxValue = MaxMantissa * Math.Pow(2.0, MaxExponent);
标签: c# math constants c#-6.0 exponent