缩小/分割十进制数

时间:2015-05-18 14:48:53

标签: c# split decimal

我一直在使用C#中的DateTime,并提出了一些有用的代码来计算日期之间的天数。

我使用以下代码计算出日期之间的天数,然后我将天数除以7来计算出多少周。

DateTime SDate = new DateTime(2014, 12, 31);
DateTime EDate = new DateTime(2015, 5, 18);
double resDays = SDate.Subtract(EDate.Date).TotalDays;
double Weeks = resDays / 7;
string resWeeks = Weeks.ToString();

但是,Weeks.ToString()的结果会返回一个冗长的十进制数 -19.5714285714286 我删除了 - resWeeks = resWeeks.Replace("-",""); 我使用此代码将冗长的数字分成两部分

string s = Weeks.ToString("0.00", CultureInfo.InvariantCulture);
string[] parts = s.Split('.');
int i1 = int.Parse(parts[0]);
int i2 = int.Parse(parts[1]);
labelWeeks.Text = i1.ToString() + i2.ToString();

然而,i2.ToString()仍然返回57,我当然希望这只是5.我怎么能这样做?

我希望"-19.5714285714286"成为"19 5" 提前谢谢。

2 个答案:

答案 0 :(得分:2)

只需使用0.0作为格式字符串,而不是0.00

作为实数的格式字符串,点前面的数字零描述左边填充,点后面的零数描述你想要的小数位数。如果你想要一个小数位,就这么说吧。

答案 1 :(得分:2)

第一点:我认为您必须尝试EDate.Subtract(SDate.Date)而不是SDate.Subtract(EDate.Date),因此结果为正值且不需要.Replace("-","")

  DateTime SDate = new DateTime(2014, 12, 31);
  DateTime EDate = new DateTime(2015, 5, 18);

  double resDays = EDate.Subtract(SDate.Date).TotalDays;
  double Weeks = resDays / 7;

第二点:结果不是整数,因为138天是在19-20周之间。您可以将结果舍入为:

string resWeeks = Math.Round(Weeks).ToString(); //resWeeks = 20

或者如果你正在寻找19 5

string resWeeks = Weeks.ToString("0.0").Replace('.',' ');