2015-09-28 63 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)。 –

相关问题