【问题标题】:6 decimal places being rounded up to 4 in MS-AccessMS-Access 中 6 位小数四舍五入
【发布时间】:2017-11-14 00:09:43
【问题描述】:

我有一个文本框,允许用户输入最多 6 位小数。这是可行的,但是,在保存时(下面的代码),该值被四舍五入到小数点后 4 位,这就是它的保存方式。

sqlupdate = "UPDATE [Products] SET [Product_Description] = @desc , " & _
            "[Unit_Type] = @ut , " & _
            "[RegularPrice] = @pr, " & _
            "[Product_Category_ID] = @catid, " & _
            "[CostPrice] = @costpc, " & _
            "[defVol] = @defvol, [size] = @size " & _
             "WHERE [Base_Code] = @basecode"

 cmd = New OleDbCommand(sqlupdate, con, trans)

 Dim decSize As Decimal = Convert.ToDecimal(txt_size.Text)

 cmd.Parameters.AddWithValue("@catid", categoryID)
 cmd.Parameters.AddWithValue("@costpc", costPc)
 cmd.Parameters.AddWithValue("@defvol", volume)
 cmd.Parameters.Add("@size", OleDbType.Decimal).Value = decSize
 cmd.Parameters.AddWithValue("@basecode", txtCode.Text)

我什至尝试将数据库字段设置为小数点后 6 位,但没有成功。我正在使用 Access 1997。

此外,数据库已经在实时环境中,因此如果需要更改数据库,则需要以编程方式完成,而不是进入数据库。

这些是我可以在数据库中设置的字段类型。

【问题讨论】:

  • 您正在使用 20 多年前的 Access '97?为什么?另外,请检查 Access 中的字段大小,四舍五入取决于小数的最大大小。
  • @ErikvonAsmuth 最初不是我的项目,最初的开发人员使用 Access '97 构建它
  • 另外,Access '97 中没有字段大小设置,至少货币数据类型没有

标签: vb.net ms-access decimal rounding


【解决方案1】:

该字段的数据类型似乎是 Currency,因为它是 JET 数据库 V3.5(Access 97 使用的)唯一一种四舍五入到小数点后的数据类型。

所以仔细检查表格的字段类型。

【讨论】:

  • 在这种情况下应该是什么数据类型?数字完全删除所有小数位。
  • 在 JET 3.5 中,您唯一的选择是 Double。十进制最初是在 JET 4.0 中引入的。替代“选项”将是 缩放 货币:保存时乘以 100,读取时除以 100。
  • 那么,在代码中使用 Double 变量并将其插入数据库?否则,Double 不是可以在表格设计中使用的数据类型。
  • 使用 Double 并没有修复它,该值仍然四舍五入为 4 DP。
  • Double 不是可以在表格设计中使用的数据类型。 - 不知道你的意思。这是。而且您可能还必须调整您的代码以反映这一点。
猜你喜欢
  • 1970-01-01
  • 2016-11-11
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多