[英]Validate whether a double/decimal is currency C#
我正在读取由管道分隔的文件,需要检查一列是否为有效货币(即,它必须遵循xxxxx.xx的格式,因此,小数点后最多两位数,尽管在此之后不必有任何数字十进制)。 我将如何在C#中执行此操作?
尝试将您的价值转换为货币,如下所示:
double dummy;
bool valid = double.TryParse(value, NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"), out dummy);
如果TryParse可以将其解析为货币,则valid
将为true。 到目前为止,这是比使用正则表达式更好的选择。
要获取值的分数(小数),只需将其转换为int并将其从原始值中减去,例如:
double fraction = value - (int)value;
fraction
将包含小数,您可以使用它们进行任何操作。
您可以使用正则表达式:
using System.Text.RegularExpressions;
if (Regex.IsMatch(myString, @"\d+(\.\d{1,2})?"))
{
// ...
}
或者如果您只想检查是否可以将其转换为小数,则使用decimal.TryParse() :
decimal value;
if (decimal.TryParse(myString, out value))
{
// Do something with value
}
看起来有点骇人听闻,但很有趣的方法来确保您正确地解析了货币:
浮动金额= float.TryParse(“ $ 1,200,000.34”,NumberStyles.Currency);
bool fractionLooksFine =(new System.Version((amount * 100).ToString())。Minor == 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.