[英]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.