2015-09-28 98 views
2

我正在嘗試一個可能包含或不包含'。'的字符串。到x個字符去除「小數點」以及。結果將最終轉換爲有符號整數。我也將始終需要十進制的1/10(即10將變爲100,1將變爲10等)。我想只是格式化字符串而不轉換爲整數直到最後。帶十進制的格式字符串

如果我的傳入字符串

9.86 我想98爲字符串(我不關心圍捕或任何東西)

,如果我得到9 我想90

,如果我得到-100 我想-1000

,如果我得到-95.353 我想-953

回答

2
string.Format("{0:d}", (int)9.015*10); 

如果你想圓結果,更換演員

編輯:但我錯過了「串」的一部分。下面

var input = "9.86"; 
var len = input.IndexOf('.'); 
var result = ""; 
if (len > 0) 
{ 
    result = input.Substring(0, len); 
    result += input.Substring(len + 1, 1); 
} 
else 
{ 
    result = input + "0"; 
} 
+0

在性能方面。我猜想解析字符串比indexOf和Substring調用保持一個字符串的速度更快。 –

1

冗長的代碼。如果你基本上是十個字符串中包含的數乘以和第一後下探小數,那麼你會過得更好鑄造字符串作爲一個小數,然後做轉換和鑄造該數字爲整數。否則,你將不得不根據特定的輸入類型編寫一套關於如何修改字符串的數學規則。

 string[] input = {"9.86", "9", "-100", "-95.3"}; 
     List<int> intNums = new List<int>(); 
     foreach (string s in input) 
     { 
      decimal number; 
      if (Decimal.TryParse(s, out number)) 
      { 
       number = number * 10; 
       intNums.Add((int)number); 
      } 

     } 

輸出: [0] 98 INT [1] 90 INT [2] -1000 INT [3] -953 INT

+0

這個工作,但是,我工作是VS 2008,.net 3.5,並沙盒了一下。我沒有Decimal.TryParse方法 – Angryjames

+0

TryParse方法實際上是對正確輸入的檢查。你可以跳過這個,然後轉換爲十進制:decimal number = Convert.ToDecimal(s)。 –

相關問題