簡體   English   中英

長整數文字

[英]long integer literals

我不得不處理用大數字計算的代碼,例如

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

還有其他選擇嗎?

為這些文字定義命名常量,並使用注釋來解釋數字代表的內容。

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

每次IMO評論。 否則,你只是讓代碼臃腫而不是最佳:

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

你可以寫

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

但這也不是真的可讀。

對於調試時變量中的數字,可以編寫調試器可視化工具

注釋 - 如果可能 - 使用conststatic readonly值,以便您只在一個地方聲明/注釋該數字。

另一種(不推薦的)做法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM