验证当前文化中的双数
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"));
有没有办法在当前文化中验证双数?我试过这个:
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"));