【问题标题】:Is possible to insert no value to float?是否可以插入不浮动的值?
【发布时间】:2014-04-14 06:39:05
【问题描述】:

我有一个数据表,其中包含多个相同类型的表。到目前为止,大多数列都是字符串类型,但我将其更改为浮动。但是,我有一些“空”行作为这些表的分隔符。这些列的值为 "" 或 string.Empty。默认值为 0。

那么,有没有办法在浮点类型的单元格中插入“无”?

我尝试插入空值,但似乎数据表不支持可空类型。 Float.parse 也不起作用 - 表示输入字符串的格式不正确。

foreach (DataColumn dc in footer.Table.Columns)
{
    footer[dc] = float.Parse(string.Empty, System.Globalization.CultureInfo.InvariantCulture);
}

谢谢

【问题讨论】:

  • 你可以试试这个footer[dc] = default(float);
  • separator of those tables 是什么意思?
  • A float 是一个值类型,它总是有一个值。为什么不使用Nullable<float>
  • 我的意思是,就像在一个数据表中插入了两个表,我希望它们用空行分隔,这样你就会看到一个表在哪里结束,第二个从哪里开始。还有 Hassan - 当我把 default(float) 放在那里时,它会放零
  • OK 那么你应该插入空白行DataTable.NewRow();然后添加它。

标签: c# types datatable


【解决方案1】:

如果您想在DataTable 中设置不存在的(null) 值,您必须使用特殊类DBNull 的实例。

footer[dc] = DBNull.Value;

【讨论】:

  • 太棒了,这个成功了 :) 我会把它送去再做几次测试,但这似乎正是我需要的!
  • @Asheara 它告诉我错误无法转换为 system.dbnull 以加倍? ,
  • @Asheara 我正在使用 entityf,
  • 嗯,这是很久以前的事了,所以我不能在我的代码上完全尝试它,但是,还有其他几个问题可能会对您有所帮助:[将 dbnull 解析为双精度] (stackoverflow.com/questions/37202141/…) , [无法将 DBNull 转换为 System.Double] (stackoverflow.com/questions/27376883/…) 从我得到的信息来看,您可能需要将数据设置为可为空的数据类型(双精度?),但如果您有一个数据表,我认为我的问题是这些类型不受支持
  • @Dragon 你正在使用不同的技术。您可以在这里提问well-formed 问题并获得合格的帮助。
【解决方案2】:

Float 是值类型,所以它不能为 null,所以它的默认值为 0。

如果你想要 null 那么列的 DataType 应该是 Nullable<float> 也写成 float?

【讨论】:

  • 当我把 Nullable 或浮动?作为数据类型,它表示 Datatable 不支持可为空的类型。但是谢谢,这个答案很有帮助,很高兴知道它总是需要一个值:)
【解决方案3】:
stringnull 时,

Convert 不会引发异常,但 Parse() 会。 尝试使用 double 而不是 float,因为这样更容易维护代码并使用 Convert.ToDouble 而不是 Parse

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2013-06-24
    • 2020-02-10
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多