【问题标题】:entity framework decimal scale实体框架小数位数
【发布时间】:2014-06-12 03:51:59
【问题描述】:

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

public Nullable<decimal> ContractorAmount { get; set; }

每当我尝试从中读取一个以 0 结尾的值时,例如 233.10,它就会从上下文中返回 233.1。结尾0缺失,有没有办法纠正这个问题?当结束值不为 0 时,它工作正常。

【问题讨论】:

  • 你是如何检索值的?
  • 233.10233.1 有什么区别??这只是为了格式化您需要0s
  • .NET 正在截断数字末尾的尾随 0 以节省空间并提高可读性。如果您想将其显示到小数点后 2 位,.ToString() 重载可以满足您的需求。删除尾随零的事实与您的数据库、EF 或任何其他外部框架无关。语言自己做到这一点。

标签: c# asp.net entity-framework


【解决方案1】:

我认为您混淆了存储格式演示格式

decimal(5,2) 将保证您有一个十进制数,其中两位小数是准确的。

默认情况下,将数据转换为字符串以进行显示时,它会省略任何尾随小数点 0。如果您希望始终将它们写出,则应使用格式说明符来确保完成。

Decimal d = 0.1M;
Console.WriteLine(d);
Console.WriteLine(d.ToString("0.00"));

第一行输出0.1,第二行输出0.10

【讨论】:

  • 我建议使用 N2 而不是 0.00。
  • @Rand 你能解释一下为什么那会是更好的方法吗?
  • @Calvedos N2 将显示数字文化中指定的数字,0.00 将简单地在末尾添加 0。因此,例如以下数字:“十进制 d = 123456789.1M;”将显示为“123456789.10”和“0.00”,但对于 N2,它将显示为“123.456.789.10”或在我的文化中显示为“123.456.789,10”在我看来更容易阅读。
猜你喜欢
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多