繁体   English   中英

收缩/分割小数

[英]Shrinking/Splitting decimal number

我一直在用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"谢谢。

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

随着实数格式字符串的使用,点前面的数字零表示左填充,点后面的零数字表示所需的小数位数。 如果您想保留一位小数,那就这样说。

第一点:我认为您必须尝试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('.',' ');  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM