C# 使用十进制设置字符串格式

C# 使用十进制设置字符串格式,c#,C#,我试图将一个可能包含“.”或不包含“.”的字符串转换为x个字符,同时删除“小数点”。结果最终将转换为有符号整数。我还将始终需要1/10的小数点(即10将变成100,1将变成10,等等)。我只想格式化字符串,而不转换为整数,直到最后 范例 如果传入字符串为 9.86 我想要98作为一个字符串(我不关心四舍五入或任何事情) 如果我得到9分 我要90 如果我得到-100 我要1000美元 如果我得到-95.353 我要-953 string.Format("{0:d}", (int)9.015*10)

我试图将一个可能包含“.”或不包含“.”的字符串转换为x个字符,同时删除“小数点”。结果最终将转换为有符号整数。我还将始终需要1/10的小数点(即10将变成100,1将变成10,等等)。我只想格式化字符串,而不转换为整数,直到最后

范例

如果传入字符串为

9.86 我想要98作为一个字符串(我不关心四舍五入或任何事情)

如果我得到9分 我要90

如果我得到-100 我要1000美元

如果我得到-95.353 我要-953

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";
}

如果实际上是将字符串中包含的数字乘以10,并在第一个数字后删除小数点,那么最好将字符串转换为小数点,然后进行转换并将该数字转换为整数。否则,您将不得不编写大量数学规则,说明如何根据特定类型的输入修改字符串

        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);
            }

        }
string[]input={“9.86”、“9”、“-100”、“-95.3”};
List intNums=新列表();
foreach(输入中的字符串s)
{
十进制数;
if(十进制三分位数字)
{
数字=数字*10;
整数。添加((整数)编号);
}
}
输出: [0]98 int [1] 90整数 [2] -1000整数
[3] -953 int

在性能方面。我猜将字符串解析为double比indexOf和Substring调用将其保持为字符串更快。但是,这是可行的,我使用的是VS2008、.NET3.5,并且有点沙盒。我没有Decimal.TryParse方法TryParse方法实际上是检查输入是否正确。您可以跳过它,直接转换为Decimal:Decimal number=Convert.ToDecimal(s)。