StringFormat Double没有舍入

时间:2010-05-12 15:14:13

标签: c# .net

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。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:5)

您可以使用Math.Truncate

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

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

答案 1 :(得分:2)

如果你将double转换为int / long,它会切掉任何小数部分,有效地给你一个“floor”或向下舍入double。

答案 2 :(得分:2)

然后你需要Math.Floor

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

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