簡體   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