长整型字面量

6

我需要处理涉及大数字计算的代码,例如:

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");

还有其他选择吗?


LiteralConverter.toLong的例子中,@不是必需的。 - luiscubal
该语言应该支持在数字字面量中使用下划线。我不认为解析器不能支持这一点。 - Darrel Lee
5个回答

5

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

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

3

我的观点是每次都要加注释。否则,你只会让代码变得臃肿不优。

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

3

您可以编写

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

但是那样也不够易读。

当你在调试时需要查看变量中的数字,你可以编写一个调试器可视化程序


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);

非常聪明(超越常规) - Moe Sisko

1

注释--如果可能的话--使用conststatic readonly值,这样您只需在一个地方声明/注释数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接