2012-06-29 37 views
5

Làm cách nào để hiển thị số chỉ với 2 số không phải là số thập phân?Làm cách nào để chỉ hiển thị 2 số thập phân đầu tiên không bằng với 0

Ví dụ:

Đối 0,00045578 Tôi muốn 0,00045 và cho 1,0000533535 Tôi muốn 1,000053

+0

người đầu tiên nên được 0,00046, do làm tròn? –

+0

Vì vậy, nếu bạn nhận được 45.2500001342 bạn muốn nó là 45,25 chính xác? – craig1231

+0

Là chuỗi hoặc vẫn là số thập phân? – Jorge

Trả lời

3

Không có định dạng được tích hợp cho điều đó.

Bạn có thể lấy phần phân số của số và đếm số lượng 0 có cho đến khi bạn nhận được hai chữ số và đặt cùng định dạng từ đó. Ví dụ:

double number = 1.0000533535; 

double i = Math.Floor(number); 
double f = number % 1.0; 

int cnt = -2; 
while (f < 10) { 
    f *= 10; 
    cnt++; 
} 

Console.WriteLine("{0}.{1}{2:00}", i, new String('0', cnt), f); 

Output:

1.000053 

Lưu ý: Mã đưa ra chỉ hoạt động nếu có thực sự là một phần phân số của số, và không cho số âm. Bạn cần phải thêm kiểm tra cho điều đó nếu bạn cần hỗ trợ những trường hợp đó.

+0

Tôi sẽ viết một cái gì đó tương đương, chỉ cần không có một vòng lặp: '-ceil (log (x% 1, 10))' cung cấp cho bạn chỉ số của chữ số đầu tiên khác không trực tiếp (ví dụ: 'log (0.0002) == -3.69..') – phg

+0

Rất tao nhã, tôi đã học được điều gì đó ngày hôm nay. – GrayFox374

3

Giải pháp của tôi sẽ chuyển đổi số thành một chuỗi. Tìm kiếm ".", Sau đó đếm số 0 cho đến khi bạn tìm thấy một chữ số khác 0, sau đó lấy hai chữ số.

Đây không phải là giải pháp thanh lịch, nhưng tôi nghĩ nó sẽ mang đến cho bạn kết quả nhất quán.

1

Hãy thử chức năng này, sử dụng phân tích để tìm ra # các chữ số phân đoạn chứ không phải tìm kiếm số không (nó hoạt động # giây tiêu cực cũng):

private static string GetTwoFractionalDigitString(double input) 
{ 
    // Parse exponential-notation string to find exponent (e.g. 1.2E-004) 
    double absValue = Math.Abs(input); 
    double fraction = (absValue - Math.Floor(absValue)); 
    string s1 = fraction.ToString("E1"); 
    // parse exponent peice (starting at 6th character) 
    int exponent = int.Parse(s1.Substring(5)) + 1; 

    string s = input.ToString("F" + exponent.ToString()); 

    return s; 
} 
Các vấn đề liên quan