C# DataGridView,某些双精度格式为指数

C# DataGridView,某些双精度格式为指数,c#,parsing,datagridview,datatable,double,C#,Parsing,Datagridview,Datatable,Double,我有一个DataGridView,其中有一个DataTable,它以前是作为数据源填充的。不幸的是,一些double被格式化为指数格式,我不知道如何更改: 代码如下所示 创建DataTable(稍后将作为数据源): 填充tmp变量并将字符串转换为双精度: double logDelay = 0; if (match.Groups[4].Value != null && match.Groups[4].Value != "") {

我有一个DataGridView,其中有一个DataTable,它以前是作为数据源填充的。不幸的是,一些double被格式化为指数格式,我不知道如何更改:

代码如下所示

创建DataTable(稍后将作为数据源):

填充tmp变量并将字符串转换为双精度:

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);
分配数据源:

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));
    }
dataGridView.DataSource = logFileDataTable;
因为DataTable列也是双精度的,所以我不能使用任何字符串格式来更改它。有人帮忙吗?:)

干杯

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


您可以在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;
通过这种方式,您将格式化正在显示的内容。 因此,如果用户输入一个新号码,它也将按照指定的格式进行格式化


请查看更多格式选项。

我不得不使用dataGridView.Columns[“delay”].DefaultCellStyle.Format=“0.000000”;但你的建议绝对正确。非常感谢:)不知道为什么我没有找到format属性。。。