比较逗号和小数点分隔符中的点(点)

时间:2013-02-18 08:25:29

标签: c# silverlight

有人能帮助我吗? 我不确定这是无知还是缺乏知识,但这真的很烦人。 比较此小数格式123.456,22123,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;

现在我正在使用代码:按“,”或“。”拆分。 ,我只是想知道更简单的方法。

4 个答案:

答案 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,22123,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);
}
    }
}

只能在控制台应用程序上使用??