2010-05-12 265 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 2010-05-13 07:55:38

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。 – 2010-05-12 15:20:21