带有十进制的C#字符串格式化为int

时间:2017-03-29 01:49:16

标签: c# parsing

我正在尝试将像10.00%这样的字符串更改为类似1000的字符。

我一直在尝试不同的东西,但我不断收到FormatException错误。

以下是我为解决这个问题所做的工作:

string text = "10.00%"; 
string s = text.TrimEnd(new char[] {'%'});
float f = float.Parse (s);
int i = (int)f;
i = i*100;

有更好的方法吗?

每条评论 - 对于10.10%12.345%,我希望获得101012345的结果

但是,对于我的用途,我永远不会解析12.345%,因为它在我的字符串值中不存在,而是12.34%

始终为2位小数

2 个答案:

答案 0 :(得分:1)

为了准确计算数学,我会把它保留为浮点数,但这里有一个简单的解决方案

string t = "10.00%";
float f = float.Parse(t.Split('%')[0]);
int i = (int)(f * 100);

我会做的是

string t = "10.00%";
float f = float.Parse(t.Split('%')[0]);
f = f * 100;

答案 1 :(得分:0)

这样做:

var possibleNum = text.Replace(".", "").Replace("%","");
int num;
If(int.TryParse(possibleNum, out num) 
{
     // it's an int and the value is in num
} 
else
{
    // not int so what do you want to do
} 

修改

在评论中OP表示字符串将始终可解析为一个数字,所以在这种情况下,只需执行此操作:

int num = int.Parse(text.Replace(".", "").Replace("%",""));