2012-12-21 2 views
0

어떻게 가능합니까?기적의 십진수 .ToString()

decimal d = ePhrase.MaxPrice; //ePhrase.MaxPrice==3 - Entity (edmx) object from sql 2012 express data field is decimal (18,2) 
string t = d.ToString(); //Why does t=="3,00"? 
d = (decimal)3.00; 
t = d.ToString(); //t=="3" 

문제는 하나의 경우 t == "3,00"이고 다른 경우 t == "3"입니까? 이 두 사건의 차이점은 무엇입니까? 모든

감사 :

decimal d = ePhrase.MaxPrice; 
    string t = d.ToString();//t=="3.00" 
    d = 4.0000m; 
    t = d.ToString();//t=="4.0000" 

문제는 당신이 문자 그대로의 실제 숫자는 decimal로 취급하려는 경우 "D = (진수) 3.00"-apparently이 REAL 소수점

+1

당신이 –

+1

을 기대하는 이유는'D = 3.00M 사용해야 무엇을 설명해주십시오;' – V4Vendetta

+0

내가 기대 문자열 t = d.ToString(); // t =을 = "3", IFormatProvider를 사용하지 않기 때문에 – Ivan

답변

6

가 없습니다,

: 접미사 여기 m 또는 M

d = 3.00m; 
t = d.ToString(); //t=="3" 

를 사용

d = (decimal)3.00; 
참고

doubledecimal로 취급하지 않습니다하지만 처리됩니다

:"m"은 소수로 3.00 및 암시 적 캐스트의 일환으로 originalValue에 일어날을 치료하는 컴파일러를 알려줍니다 전환.

대한 추가 정보를 원하시면이를 참조하십시오 Decimal in C#