c# - 验证小数精度
问题描述
嗨,我正在尝试计算,我正在使用流利的验证包来确保遵守我的规则
验证正在触发并进入规则,但仍然无法 100% 工作
SageOrderMixB sageOrder = new SageOrderMixB();
var validator = new MixValidator();
var results = validator.Validate(sageOrder);
public class MixValidator : AbstractValidator<SageOrderMixB>
{
public MixValidator()
{
RuleFor(x => x.WeightInTons).LessThanOrEqualTo(28).ScalePrecision(2, 2).WithMessage("Weight cannot be greater than 28 and must be a precison of 2"); ;
}
}
但是,如果我将重量输入为 29,它仍然会绕过并未能通过我的单元测试
在这里你会看到我在添加到我的模型之前陷入困境
if (results.IsValid == false)
{
sberror.Clear();
foreach (var item in results.Errors)
{
sberror.Append(item.ErrorMessage);
}
MessageBox.Show("Please correct the following " + sberror.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
sageOrdersList.Add(sageOrder);
解决方案
这里:
.ScalePrecision(2,2)
第一个2
是小数位数。第二个2
是数字位置的数量。
0.45 <-- this is valid
1.45 <-- this is invalid
例如
.ScalePosition(2,4)
27.24 <-- this is valid
来源:https ://docs.fluentvalidation.net/en/latest/built-in-validators.html#scaleprecision-validator
推荐阅读
- json - 从xml转换时获取可用的Json
- excel - 动态创建的复选框总是不返回正确的值(真/假)
- angular - 在我的应用程序中,向所有不需要的 mat-select 添加空 mat-option
- php - 如何在 Laravel 中按字母顺序对项目进行排序?
- python - 确定 Flask 请求中的客户端端口
- c# - 使用按钮以新形式创建它们
- sql - Postgres 根据某些条件隐藏和显示数据库行
- ios - 当语言为阿拉伯语时,链接在 UITextView 属性字符串中不起作用
- javascript - 如何改进此“采摘”实用程序功能的类型?
- linux - Python 构建完成,但未找到构建这些模块的必要位