2010-01-23 3 views
4

다음 코드는 현재 출력 :어떻게 진수 문자열 떨어져 0과 소수점을 제거 할 수 있습니까?

12.1 
12.100 
12.1000 
12.00 
12 
12.0000 

는 출력 그래서 나는 그것을 바꿀 수있는 방법 :

12.1 
12.1 
12.1 
12 
12 
12 

Math.Round는 일이 될 것 같다,하지만 그것은 나를 정의 할 수 있습니다 얼마나 많은 소수 자릿수 I 하지만 나는 그들이 위와 같이 변수가되기를 원한다.

수학적 방법이 없다면, 문자열의 오른쪽에서 0과 소수점을 제거 할 것이지만이를 처리 할 수학적 방법이 있다고 생각할 것입니다.

using System; 
using System.Collections.Generic; 

namespace Test8834234 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 

      List<string> decimalsAsStrings = new List<string> 
      { 
       "12.1", 
       "12.100", 
       "12.1000", 
       "12.00", 
       "12", 
       "12.0000" 
      }; 

      foreach (var decimalAsString in decimalsAsStrings) 
      { 
       decimal dec = decimal.Parse(decimalAsString); 
       Console.WriteLine(dec); 
      } 

      Console.ReadLine(); 

     } 
    } 
} 

답변

10

에서 숫자 형식 문자열에 대해 자세히 알아보기 코드에 대한 국제화 문제 당신이 그것을 코딩 한 방법은, 그것은 소수 구분에 대한 .이 아닌 다른 뭔가를 할 수 있습니다 사용자의 컴퓨터에서 문화 정보를 사용합니다. 이로 인해 천 단위 구분 기호가 . 인 사용자에게 잘못된 결과가 표시 될 수 있습니다. 당신은 구문 분석 방법은 항상 동일하게 동작 것이라는 점을 보장하려면

, 당신은 CultureInfo.InvariantCulture를 사용할 수 있습니다. 실제로 사용자의 문화권 설정에 따라 문자열을 구문 분석하려는 경우 잘하고 있습니다.

4

사용 :

string s = dec.ToString("0.#"); 

참고 : 당신은 할 수 있습니다

Console.WriteLine("{0:0.####}", dec); 

당신은 또한 매개 변수를 사용하여 소수의 toString을 사용할 수 있습니다 here...

1

이 문자열의 형식은 하루를해야한다 ". 0 #############################". 그러나 십진법은 최대 29 자릿수까지 가질 수 있습니다.

예 :

? (1000000.00000000000050000000000m).ToString("0.#############################") 
-> 1000000.0000000000005 

? (1000000.00000000000050000000001m).ToString("0.#############################") 
-> 1000000.0000000000005 

? (1000000.0000000000005000000001m).ToString("0.#############################") 
-> 1000000.0000000000005000000001 

? (9223372036854775807.0000000001m).ToString("0.#############################") 
-> 9223372036854775807 

? (9223372036854775807.000000001m).ToString("0.#############################") 
-> 9223372036854775807.000000001 
0
public static string RemoveDecimalsFromString(string input) 
{ 
    decimal IndexOfDot = input.IndexOf("."); 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < IndexOfDot; i++) 
    { 
     sb.Append(input[i]); 
    } 

    return sb.ToString(); 
} 
관련 문제