2012-02-04 46 views
6

Tôi phải đối phó với mã thực hiện phép tính với số lượng lớn, ví dụ:các số nguyên nguyên dài

long foo = 6235449243234; 

Thật khó để biết thứ tự độ lớn là gì. Tôi muốn viết nó

long foo = 6_235_449_243_234; 

Hoặc

long foo = @6 235 449 243 234; 

Nhưng C# không có các tính năng này. Làm thế nào để làm cho chữ số dễ đọc hơn?

Comment nó

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

Chuyển đổi nó từ chuỗi

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

Bất kỳ lựa chọn khác?

+2

thể trùng lặp của (http://stackoverflow.com/questions/8488989/can -i-declaration-constant-số nguyên-với-một-nghìn-tách-trong-c) – CodesInChaos

+0

Trong ví dụ 'LiteralConverter.toLong',' @ 'là không cần thiết. – luiscubal

+0

Ngôn ngữ chỉ nên hỗ trợ sử dụng '_' trong các chữ số. Tôi không thấy lý do nào tại sao trình phân tích cú pháp không thể hỗ trợ điều đó. –

Trả lời

3

Nhận xét mỗi lần IMO. Nếu không, bạn chỉ cần làm cho mã cồng kềnh và ít hơn tối ưu:

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

Comments - và nếu có thể - sử dụng const hoặc static readonly giá trị do đó bạn chỉ tuyên bố/bình luận số ở một nơi.

5

Xác định các hằng số được đặt tên cho các chữ cái này và sử dụng các nhận xét để giải thích số đại diện.

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

+1, nhưng giá bữa sáng có thể đã tăng gấp đôi. – Marlon

3

Bạn có thể viết

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

Nhưng đó không phải là thực sự có thể đọc được một trong hai.

Đối với các số trong các biến khi bạn đang gỡ lỗi, bạn có thể viết debugger visualizer.

+0

Trình chỉnh sửa trình gỡ lỗi +1, không biết số –

1

khác (unrecommended) cách để làm việc đó: [? Tôi có thể tuyên bố các số nguyên liên tục với một tách ngàn trong C#]

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

rất thông minh (bên ngoài hộp) –

Các vấn đề liên quan