【问题标题】:MS SQL Server decimal data type rounds upMS SQL Server 十进制数据类型向上舍入
【发布时间】:2011-02-04 17:25:34
【问题描述】:

我需要能够在我的表中存储像 3.5 这样的数字。所以我使用了十进制类型字段。但是如果我输入 3.5 它会四舍五入到 4。我是傻还是有小数点不是小数点?

【问题讨论】:

  • 为什么不使用FLOAT,如果您需要将数字四舍五入为0.0 或0.5,请使用look at this thread
  • 是的,虽然 FLOAT 是针对大量数字的。认为我需要再次了解数据类型。谢谢领航员!
  • @Jonesy - 请确保您了解 FLOAT 和 DECIMAL 之间的区别,因为它们并不相同。 FLOAT 是近似值:msdn.microsoft.com/en-us/library/ms173773.aspx 与 DECIMAL 参考:msdn.microsoft.com/en-us/library/ms187746.aspx
  • 您能否发布小数列的完整定义(即您使用的比例和精度),例如DECIMAL(10, 2) - 10=精度,2=比例。另外,您是如何将数字输入到 UI 中的?在 SQL 语句中?你也可以发一下吗?
  • 如果您打算对值进行数学运算,那么浮点数是一个非常糟糕的主意。它将导致舍入错误,因为它不是一个精确的值。非常糟糕的建议。

标签: sql sql-server-2008 types decimal


【解决方案1】:

您需要将其声明为 decimal(18,3) 以指定点后的位数。

如果您使用存储过程参数,还必须在 decimal 旁边指定精度,例如十进制(18,3)

【讨论】:

  • 是的,它被声明为十进制 (18,3)。不知道为什么我把它四舍五入。
  • 你是怎么放数据的?也许您正在使用存储过程 - 参数也应该具有十进制(18,3)类型,而不仅仅是十进制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 2019-06-12
  • 2018-03-02
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多