2010-08-16 97 views
6

Tôi có giá trị khác nhau, từ 1 đến 10000000. Sau giá trị 10000 tôi cần hiển thị giá trị là 1E6,1E7,1E8, .... Cách đặt giá trị này thành chuỗi.Định dạng?định dạng chuỗi trong C#

Cảm ơn tất cả vì đã trả lời.
Bây giờ tôi có thể hiển thị 1E5,1E6,1E7, .... bằng cách sử dụng định dạng "0.E0" nhưng tôi không muốn đặt "E" từ 1 đến 10000.
Làm cách nào để thực hiện việc này?

Trả lời

2

Bạn có thể sử dụng exponent notation nhưng tôi nghĩ rằng nó sẽ hoạt động cho tất cả các số và không chỉ những số lớn hơn 10000. Bạn có thể cần phải có điều kiện để xử lý trường hợp này.

0

Tôi đề nghị tham chiếu đến giá trị dưới dạng phao. Bằng cách đó bạn có thể sử dụng "NumberStyles.AllowExponent" và điều đó sẽ cung cấp chính xác những gì bạn đang tìm kiếm.

string i = "100000000000"; 
    float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent); 

    Console.WriteLine(g.ToString()); 
+0

cảm ơn nhưng tôi cần chỉ hiển thị 1E11 nhưng mã của bạn hiển thị biểu tượng + mà tôi không cần – Guddu

+0

Điều này ngược lại. Ở đây bạn phân tích một phao từ một chuỗi. Khi nó là một phao nó không có bất kỳ định dạng, tất nhiên, và in nó chỉ in số. – Kobi

0
 
String.Format("10^8 = {0:e}", 100000000"); //The "e" will appear lowercase 
String.Format("10^8 = {0:E}", 100000000"); //The "E" will appear in uppercase 

Nếu bạn muốn nó được đẹp hơn, hãy thử này:

 
Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0")); 
2

Something như thế này nên làm như lừa:

void Main() 
{ 
    Console.WriteLine(NumberToString(9999)); 
    Console.WriteLine(NumberToString(10000)); 
    Console.WriteLine(NumberToString(99990)); 
    Console.WriteLine(NumberToString(100000)); 
    Console.WriteLine(NumberToString(10000000)); 
} 

// Define other methods and classes here 
static string NumberToString(int n) 
{ 
    return (n > 10000) ? n.ToString("E") : n.ToString(); 
} 

=>

9999 
10000 
9.999000E+004 
1.000000E+005 
1.000000E+007 

nb: chọn tên tốt hơn cho hàm.

+0

Có lẽ thậm chí còn đẹp hơn như một phương pháp mở rộng ... –

+0

@Dan: C# 2.0 được gắn thẻ, phiên bản đó có phương pháp mở rộng không? Tôi nghĩ rằng họ đã được giới thiệu trong 3.0. Nhưng có, nó sẽ đẹp hơn nhiều như một phương pháp mở rộng. – ngoozeff