有人能帮助我吗?
我不确定这是无知还是缺乏知识,但这真的很烦人。
比较此小数格式123.456,22
和123,456.22
的最佳方式。
我试试这种方式:
十进制val1 = 0; decimal val2 = 0;
decimal.TryParse(“123,456.22”,out val1);
decimal.TryParse(“123.456,22”,out val2);
如果计算机格式为123.456,22
,
我尝试decimal.TryParse(123,456.22
,out val1) - > val1 = 0;
现在我正在使用代码:按“,”或“。”拆分。 ,我只是想知道更简单的方法。
答案 0 :(得分:1)
使用Decimal.Parse方法:http://msdn.microsoft.com/en-us/library/cafs243z.aspx
Decimal.Parse(value);
您可以使用重载方法传入Culture(http://msdn.microsoft.com/en-us/library/t7xswkc6.aspx)
Decimal.Parse(value, new CultureInfo("en-GB"));
答案 1 :(得分:0)
试试这个:
decimal d1;
string s1 = "123,456.22";
if (Decimal.TryParse(s1,
System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.GetCultureInfo("ro-RO"),
out d1))
{
Console.WriteLine("Success: {0} converted into {1} using the ro-RO number format",
s1, d1);
}
else if (Decimal.TryParse(s1, out d1))
{
Console.WriteLine("Success: {0} converted into {1} using the {2} number format",
s1, d1,System.Globalization.CultureInfo.CurrentCulture.Name);
}
}
}
您可能会发现这篇维基百科文章很有趣:Decimal mark。
答案 2 :(得分:0)
123.456,22
和123,456.22
有一个不同的分隔符,而在一种情况下,它的点(.
)在另一种情况下是一个逗号(,
)当你刚使用时解析它将依赖于当前的文化,因此其中一个将无法解析。
在这种情况下,您应该建立相关的NumberFormatInfo
并根据您对小数点分隔符(NumberDecimalSeparator
)和千位分隔符(NumberGroupSeparator
)的需求进行设置
所以你应该使用TryParse,如果返回false,那么像这样构建你的自定义并使其可用于Parse as Parameter。
// check with TryParse first and if it returns false then try as below
NumberFormatInfo numinf = new NumberFormatInfo();
numinf.NumberDecimalSeparator= ",";
numinf.NumberGroupSeparator= ".";
decimal.Parse("your failed tryparse", numinf);
答案 3 :(得分:0)
decimal d1;
string s1 = "123,456.22";
if (Decimal.TryParse(s1,
System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.GetCultureInfo("ro-RO"),
out d1))
{
Console.WriteLine("Success: {0} converted into {1} using the ro-RO number format",
s1, d1);
}
else if (Decimal.TryParse(s1, out d1))
{
Console.WriteLine("Success: {0} converted into {1} using the {2} number format",
s1, d1,System.Globalization.CultureInfo.CurrentCulture.Name);
}
}
}
只能在控制台应用程序上使用??