验证当前文化中的双号

时间:2015-06-17 13:10:33

标签: c# parsing double cultureinfo currentculture

有一种方法可以验证当前文化中的双号吗?我试过这个:

var number ="10,10";
double value = double.Parse(number,
                    NumberStyles.Float, 
                    CultureInfo.CurrentCulture);

如果我尝试使用" es-ES" (其中小数分隔符为",")然后解析工作完美,我得到了一个双10.10,但如果我尝试使用" en-US" (其中小数分隔符是"。")解析无法理解小数点,所以只需省略它,所以我得到1010个错误的数字。

当我尝试为指定的文化转换错误的数字时,我有办法获得异常吗?

编辑:按","我不是指千位分隔符,我的意思是某些文化的小数分隔符,如es-ES

1 个答案:

答案 0 :(得分:3)

在我的机器上,以下内容抛出FormatException,如预期的那样:

var number ="10,10";
double value = double.Parse(number,
NumberStyles.Float, 
CultureInfo.InvariantCulture);

我怀疑你正在使用NumberStyles.AllowThousands。例如,以下内容将返回1010:

var number ="10,10";
double value = double.Parse(number,
NumberStyles.Float | NumberStyles.AllowThousands, 
CultureInfo.InvariantCulture);

<强>更新

回应评论:

  

...但如果我使用en-US&#34; 10,10&#34;因为#10; 1010&#34;而不是抛出错误

这不是我所期待的;例如,以下内容将抛出FormatException

var number ="10,10";
double value = double.Parse(number,
NumberStyles.Float, 
new CultureInfo("en-US"));
相关问题