Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架小数比例_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 实体框架小数比例

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。结

我使用的是实体框架6.0.2,数据库优先的方法。目前在我的数据库中,有一个字段设置为十进制(5,2)。生成实体框架模型时,我看到模型的属性也显示精度设置为5,比例设置为2,类型设置为十进制。生成的类将其构建为:

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',我认为这更容易阅读。