2010-05-12 3 views
3
double d = toDateTime.SelectedDateTime.Subtract(
       servicefromDateTime.SelectedDateTime).TotalHours;    
string s = String.Format("{0:0}",d); 

그러나 String.Format은 d가 22.91이면 String.Format은 반올림 결과가 23이됩니다. 반올림하지 않으려합니다. 예를 들어 d가 22.1222222이면 22를 원합니다. d가 22.999999이면 22를 원합니다.StringFormat 반올림하지 않고 두 번

어떻게하면됩니까?

답변

5

에 당신은 음수 작동하지 않을 것입니다 Math.Truncate

double d = toDateTime.SelectedDateTime.Subtract(servicefromDateTime.SelectedDateTime).TotalHours; 

string s = String.Format("{0:0}", Math.Truncate(d)); 
+0

나는 OP가 원하는 행동을 말할 수는 없지만, Math.Floor 또는 Math.Truncate 중 하나는 실제로 그가 원하는 것을 할 것입니다. – Jamiec

2

double을 int/long으로 형 변환하면 모든 십진수 구성 요소가 잘 리게되어 사실상 double의 "floor"또는 round-down을 부여합니다.

2

은 그럼 당신은 Math.Floor

double d = toDateTime.SelectedDateTime.Subtract(servicefromDateTime.SelectedDateTime).TotalHours; 

string s = String.Format("{0:0}",Math.Floor(d)); 
+1

층을 사용할 수 있어야합니다. Math.Floor (-7.1)은 -8을 반환합니다. –