【发布时间】:2015-06-17 13:10:33
【问题描述】:
在当前文化中有一种方法可以验证双数吗?我试过这个:
var number ="10,10";
double value = double.Parse(number,
NumberStyles.Float,
CultureInfo.CurrentCulture);
如果我尝试使用“es-ES”(其中小数分隔符为“,”),那么解析工作完美,我得到一个双 10.10,但如果我尝试使用“en-US”(其中小数分隔符是".") 解析无法理解小数点,所以就省略了,所以我得到一个1010不正确的数字。
当我尝试为指定的文化转换错误的数字时,有办法让我得到一个异常吗?
编辑:“,”不是千位分隔符,我指的是像 es-ES 这样的文化的小数分隔符
【问题讨论】:
-
不,因为你必须知道
"10,10"的含义。所以你必须依赖CurrentCulture或者知道最初使用的是什么。 -
我知道正在使用的 CurrentCulture 是什么,但我要求使用正确的格式,我插入了错误的格式,我应该无法将一种文化转换为另一种文化,我只是想要一个错误弹出,不是转换失败
-
double.TryParse 怎么样?
-
如果指定
NumberStyles.Float,则不使用组分隔符,因此10,10不应被解释为“en-US”中的组分隔符。相反,您会根据需要获得异常。 -
就像@TimSchmelter 说的那样,没有任何事情可以 100% 确定 - 100.000 和 100,000 可能是相同的数字,具体取决于 source 文化是什么。如果您根据客户端文化将数字格式化为字符串,那么您必须知道客户端文化才能将其解析回数字。
标签: c# parsing double cultureinfo currentculture