长整数文字

时间:2012-02-04 19:01:46

标签: c# .net

我不得不处理使用大数字进行计算的代码,例如

long foo = 6235449243234;

这很难说是什么数量级。我想写一下

long foo = 6_235_449_243_234;

或者

long foo = @6 235 449 243 234;

但是C#没有这些功能。如何使数字文字更具可读性?

评论

long foo = 6235449243234; // 6 23...

从字符串

转换它
long foo = LiteralConverter.toLong(@"6_235_449_243_234");
int mask = LiteralConverter.toInt("b0111_0000_0100_0000");

还有其他选择吗?

5 个答案:

答案 0 :(得分:5)

为这些文字定义命名常量,并使用注释来解释数字代表的含义。

class MyClass {
    ///
    /// This constant represents cost of a breakfast in Zimbabwe:
    /// 6,235,449,243,234
    ///
    const long AvgBreakfastPriceZimbabweanDollars = 6235449243234;
}

答案 1 :(得分:3)

每次IMO都会发表评论。否则,你只是让代码臃肿而不是最佳:

long foo = 6235449243234; // 6,235,449,243,234

答案 2 :(得分:3)

你可以写

long lNumber = (long)(6e12 + 235e9 + 449e6 + 243e3 + 234);

但这也不是真的可读。

对于调试时变量中的数字,您可以编写debugger visualizer

答案 3 :(得分:1)

评论 - 如果可能 - 使用conststatic readonly值,以便您只在一个地方声明/评论该号码。

答案 4 :(得分:1)

另一种(未经推荐的)方式:

static long Parse(params int[] parts)
{
    long num = 0;
    foreach (int part in parts)
        num = num * 1000 + part;
    return num;
}

long foo = Parse(6,235,449,243,234);