【问题标题】:inserting c# double values to sql server float field. (no fractional part)将 c# double 值插入到 sql server 浮点字段。 (没有小数部分)
【发布时间】:2013-05-19 05:55:15
【问题描述】:

我正在尝试通过 EF 5 向我的数据库插入双精度值。我从 db 生成了 EF 实体模型。表中有一个价格列是浮点数,自然 EF 为映射器类生成了一个双精度类型。 我从文件中读取了一些字符串值并将其转换为 double 并将其保存到 db。当我调试时,我可以看到值已正确转换。例如字符串值"120,53" 转换为像120.53 这样的double,就可以了。但是当我保存我的上下文时,它会像"12053"一样进入数据库。

什么会导致这样的问题? SQL Server 中是否有任何设置与此有关?

【问题讨论】:

  • 请给我们看一些代码。
  • 可能会显示您加载、转换和保存值的代码行?
  • 我的代码基本是这样的。产品 p = 新产品(); product.SalePrice = Convert.ToDouble(somestring.Replace('.', ',')); context.Products.Add(p); context.SaveChanges();
  • 我无法在评论框中格式化它。很抱歉造成混乱
  • 不要将代码示例或示例数据放入 cmets - 因为您无法对其进行格式化,所以阅读它非常困难....而是:更新您的问题,编辑它以提供附加信息!谢谢。

标签: c# sql-server floating-point double type-conversion


【解决方案1】:

我相信问题出在您的 Convert.ToDouble 和 , 而不是小数点上。如果不提供数字的文化,它可能会将 , 解释为千分之一分隔符并忽略它。如果环境的文化是 , 用作小数的文化,请尝试将 CultureInfo.CurrentCulture 作为第二个参数 (IFormatProvider) 传递。或者,因为看起来您正在用 , 替换小数点,所以不要替换它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多