如何验证基于小数分隔符的小数
本文关键字:小数 何验证 分隔符 于小数 验证 | 更新日期: 2023-09-27 18:00:50
我想验证数字,我只知道十进制分隔符(点或逗号(
Eg.1:n1=12.4和n2=1234.5->两者都对"有效作为十进制分隔符,并且两者都无效用于","作为十进制分隔符。
Eg.2:n1=12,4和n2=1.234,5->对于作为小数分隔符的","都有效,并且都无效用于"。"作为十进制分隔符。
到目前为止我试过什么?
CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo;
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator;
并使用
decimal.Parse(stringValue, cultureInfo);
- Eg1+'.'=>两者都有效OK
- Eg1+','=>两者都抛出异常OK
- Eg2+','=>n1抛出异常正常,n2抛出异常错误
- Eg2+'.'=>n1是124错误,n2抛出异常OK
你建议我做什么?
您也可以尝试设置组分隔符,这意味着如果您知道十进制分隔符是逗号,则将组分隔符设置为句点:
CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo;
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator;
cultureInfo.NumberFormat.NumberGroupSeparator = myGroupSeparator;
您可以使用decimal.TryParse
来尝试捕获异常
尝试使用
decimal.Parse(stringValue, cultureInfo.NumberFormat);
仅仅使用文化是不够的。看看MSDN。
我想您的正常区域性使用","作为组分隔符和"."作为十进制分隔符。因此,通过从不变区域性创建一个新的区域性,然后将十进制分隔符设置为"就像什么都不做。另一方面,新创建的区域性仍在使用","作为组分隔符,因此通过将十进制分隔符设置为",",可以说明","既是组分隔符也是十进制分隔符。这就是为什么它在测试1和2中运行良好,而在其他测试中失败的原因。