DataGridView,一些双精度格式设置为指数

时间:2018-08-13 10:37:53

标签: c# parsing datagridview datatable double

我有一个带有DataTable的DataGridView,之前已将其填充为DataSource。不幸的是,有些双打被格式化为指数格式,我不知道该如何更改:

enter image description here 代码如下所示。

创建数据表(稍后将成为数据源):

void CreateDataTable()
    {
        logFileDataTable = new DataTable();

        logFileDataTable.Columns.Add("line", typeof(int));
        logFileDataTable.Columns.Add("time", typeof(string));
        logFileDataTable.Columns.Add("delay", typeof(double));
        logFileDataTable.Columns.Add("thread", typeof(string));
        logFileDataTable.Columns.Add("task", typeof(string));
        logFileDataTable.Columns.Add("value", typeof(string));
        logFileDataTable.Columns.Add("message", typeof(string));
    }

破坏tmp变量并将字符串转换为double:

double logDelay = 0;
if (match.Groups[4].Value != null && match.Groups[4].Value != "")
                    {
                        logDelay = double.Parse(match.Groups[4].Value.Replace(".", ","));
                    }

将行添加到数据表:

logFileDataTable.Rows.Add(logZeile, logZeit, logDelay, logThread, logTask, logValue, logMeldung);

分配数据源:

dataGridView.DataSource = logFileDataTable;

由于DataTable列也是两倍,所以我不能使用任何字符串格式来更改它。有人帮忙吗? :)

欢呼

编辑: 调试代码表明在解析之前该值是正确的:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在DataGridView组件上设置列本身的格式,如下所示:

var delayColumnName = "delay";
var numberWithDecimalsFormat = "N7";

table.Columns.Add(delayColumnName, typeof(double));
table.Rows.Add(0.000098);

dataGridView1.DataSource = table;
dataGridView1.Columns[delayColumnName].DefaultCellStyle.Format = numberWithDecimalsFormat;

这样,您将格式化显示的内容。 因此,如果用户输入一个新号码,它也会按照指定的格式进行格式化。

请查看here,了解更多格式设置选项。