繁体   English   中英

验证双精度/十进制是否为货币C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM