C# 验证decimal 小数点以及前几位后几位

public class CustomRadixPointAttribute : ValidationAttribute
{
private readonly int _index;
public CustomRadixPointAttribute(int index)
{
_index = index;
}
///
public override bool IsValid(object? value)
{
if (value == null)
{
return true;
}

decimal d = Convert.ToDecimal(value);
decimal d2 = Math.Floor(d * Convert.ToDecimal(Math.Pow(10.0, _index))) / Convert.ToDecimal(Math.Pow(10.0, _index));
if (d == d2)
return true;
return false;
}
}

//以上方法只验证小数点保留几位

/// <summary>
/// 判断小数位数,比如前十后四
/// </summary>
public class CustomNumberDigitsAttribute : ValidationAttribute
{
private readonly int _beforePoint;
private readonly int _afterPoint;

public CustomNumberDigitsAttribute(int beforePoint, int afterPoint) : base()
{
_beforePoint = beforePoint;
_afterPoint = afterPoint;
}
public override bool IsValid(object value)
{
string strValue = value?.ToString();
if (string.IsNullOrWhiteSpace(strValue))
return true;

decimal number = Convert.ToDecimal(strValue);

var strSplit = number.ToString().Split(".");
if (strSplit.Count() == 2)
{
if (strSplit[0].Length <= _beforePoint && strSplit[1].Length <= _afterPoint)
{
return true;
}
}
else
{
if (strSplit[0].Length <= _beforePoint)
{
return true;
}
}
return false;
}
}

 

posted @   Best丶zhaotf  阅读(385)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示