C# 实体框架小数比例
我使用的是实体框架6.0.2,数据库优先的方法。目前在我的数据库中,有一个字段设置为十进制(5,2)。生成实体框架模型时,我看到模型的属性也显示精度设置为5,比例设置为2,类型设置为十进制。生成的类将其构建为:C# 实体框架小数比例,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我使用的是实体框架6.0.2,数据库优先的方法。目前在我的数据库中,有一个字段设置为十进制(5,2)。生成实体框架模型时,我看到模型的属性也显示精度设置为5,比例设置为2,类型设置为十进制。生成的类将其构建为: public Nullable<decimal> ContractorAmount { get; set; } public可为空的ContractorAmount{get;set;} 每当我试图从中读取一个结尾为0的值,比如233.10,它就会从上下文返回233.1。结
public Nullable<decimal> ContractorAmount { get; set; }
public可为空的ContractorAmount{get;set;}
每当我试图从中读取一个结尾为0的值,比如233.10,它就会从上下文返回233.1。结尾0丢失,是否有方法更正此问题?当结束值不是0时,它可以正常工作。我认为您混淆了存储格式和表示格式
decimal(5,2)
将保证您有一个带两个小数的十进制数,这两个小数是精确的
默认情况下,将数据转换为字符串进行显示时,会忽略任何尾随的小数点0。如果您希望一直将它们写出来,那么应该使用格式说明符来确保这样做
Decimal d = 0.1M;
Console.WriteLine(d);
Console.WriteLine(d.ToString("0.00"));
第一行将输出
0.1
,第二行将输出0.10
您是如何检索值的?233.10
和233.1
之间有什么区别??仅出于格式化目的,您需要0
s.NET截断数字末尾的尾随0,以节省空间并提高可读性。如果您想将其显示到小数点后2位,则会有.ToString()
重载提供您想要的内容。删除尾随零的事实与数据库、EF或任何其他外部框架无关。语言本身就可以做到这一点。我建议使用N2而不是0.00。@兰德,你能解释一下为什么这是一种更好的方法吗?@Calvedos N2将按照区域性中指定的数字显示数字,0.00只需在末尾加上0。因此,对于exmample,以下数字:'十进制d=123456789.1M;'将显示为'123456789.10',带有'0.00',但对于N2,它将显示为'123.456.789.10',或者在我的文化中显示为'123.456.789,10',我认为这更容易阅读。