本文介绍了双的TryParse值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要验证双重价值。当我的TryParse .00或00
收益假
,但我让这个值必须如此。
这代码不是这种情况下,正常工作
模式= 00或0.002,或789,或0.12 ...
双号;
double.TryParse(型号,NumberStyles.Any,NumberFormatInfo.InvariantInfo,出号)
解决方案
您可以循环所有支持的文化:
布尔可解析= FALSE;
双号= 0;
变种supportedCultures =新[] {CultureInfo.InvariantCulture,CultureInfo.CreateSpecificCulture(去DE)};
的foreach(在supportedCultures VAR文化)
{
解析的= double.TryParse(型号,NumberStyles.Any,文化,出号);
如果(可解析)
中断;
}
或LINQ:
CultureInfo的thisCulture = supportedCultures
.FirstOrDefault(C => double.TryParse(型号,NumberStyles.Any,C,出号));
如果(thisCulture!= NULL)
{
Console.WriteLine(数字是可解析为+号);
}
老办法,太容易出错asawyer指出(1,000,000.00
):
I need validate double values. When I TryParse .00 or ,00
return false
, but I allow this values must true.
This code not work correctly for this case
model = ,00 or .002 or ,789 or .12 ...
double number;
double.TryParse(model, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out number)
解决方案
You could loop all supported cultures:
bool parsable = false;
double number = 0;
var supportedCultures = new[] { CultureInfo.InvariantCulture, CultureInfo.CreateSpecificCulture("de-DE") };
foreach(var culture in supportedCultures)
{
parsable = double.TryParse(model, NumberStyles.Any, culture, out number);
if (parsable)
break;
}
or with LINQ:
CultureInfo thisCulture = supportedCultures
.FirstOrDefault(c => double.TryParse(model, NumberStyles.Any, c, out number));
if (thisCulture != null)
{
Console.WriteLine("Number was parsable to " + number);
}
old approach, too error-prone as asawyer has pointed out("1,000,000.00"
):
这篇关于双的TryParse值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!