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