验证当前文化中的双数

Validate double number in current culture

有没有办法在当前文化中验证双数?我试过这个:

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

如果我用 "es-ES"(小数点分隔符是“,”)尝试这个,那么解析就完美了,我得到了一个双 10.10,但如果我尝试 "en-US" (其中小数点分隔符是“.”)解析无法理解小数点,所以省略它,所以我得到一个 1010 不正确的数字。

当我试图为指定的文化转换错误的数字时,有什么方法可以让我得到异常?

编辑:“,”我不是指千位分隔符,我指的是某些文化(如 es-ES)的小数点分隔符

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

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

我怀疑您正在使用 NumberStyles.AllowThousands。例如,下面将 return 1010:

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

更新

回复评论:

... but if I'm using en-US "10,10" becames "1010" instead of throwing an error

这不是我所期望的;例如,以下将抛出 FormatException:

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