有一种方法可以验证当前文化中的双号吗?我试过这个:
var number ="10,10";
double value = double.Parse(number,
NumberStyles.Float,
CultureInfo.CurrentCulture);
如果我尝试使用" es-ES" (其中小数分隔符为",")然后解析工作完美,我得到了一个双10.10
,但如果我尝试使用" en-US" (其中小数分隔符是"。")解析无法理解小数点,所以只需省略它,所以我得到1010
个错误的数字。
当我尝试为指定的文化转换错误的数字时,我有办法获得异常吗?
编辑:按","我不是指千位分隔符,我的意思是某些文化的小数分隔符,如es-ES
答案 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"));