【问题标题】:How to display decimal value to 2 decimal places in datatable to display in datagrid如何在数据表中将十进制值显示为小数点后 2 位以在数据网格中显示
【发布时间】:2020-03-05 14:51:31
【问题描述】:

我有一个表列sales_price,类型为money。当我通过存储过程检索其值并将该值插入到数据表dtDetail 中时,该数据表稍后会显示在数据网格dataListDetail 中(来自WinForm),它返回的值最多为4 个小数位(因为类型的钱)。我需要将值设置为小数点后两位。

private void createTable()
{
    this.dtDetail.Columns.Add("sales_price", System.Type.GetType("System.Decimal"));

    this.dataListDetail.DataSource = this.dtDetail;

    this.dataListDetail.Columns["sales_price"].HeaderText = "Sales Price";

}

插入 5050,5 之类的值后,我希望 sales_price 值在数据网格中仅显示 2 位小数(例如 50 ,0050,50),但它以 4 位小数结束显示(例如 50,000050,5000 em>) 默认情况下(由于 Money 类型)。

提前谢谢你!

【问题讨论】:

  • 你好 Alexander,它是 WinForms。已经更新了上下文并添加了标签

标签: c# .net winforms


【解决方案1】:

只需在 DefaultCellStyle 上设置格式:

this.dataListDetail.Columns["sales_price"].DefaultCellStyle.Format = "C2";

【讨论】:

  • 非常感谢。这正是我所需要的,尽管我不得不将我的区域设置更改为英语(美国),因为我的计算机有西班牙语(委内瑞拉)。为了不必这样做,是否有另一种格式可以做同样的事情,不使用货币(只关注 2 位小数)或任何其他类似于此行的适用于此上下文的解决方案?
  • 我找到了我需要的格式,它适用于“N2”或“0.00##”,并且两者都显示带有 2 位小数的值,没有货币。感谢您为我指明正确的方向!
  • @DigitalDevGuy - 此外,您可以将 DefaultCellStyle.FormatProvider 设置为所需的文化。
【解决方案2】:

也许 .ToString("c2") 是你想要的?它将转换为您的系统货币格式。

【讨论】:

  • 填充数据表时。如果它只是用于显示数据,您可以使用类型字符串而不是十进制。 IE。 dtDetail.Rows.Add(value.ToString("c2"));
猜你喜欢
  • 2010-09-14
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
相关资源
最近更新 更多