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