【发布时间】:2020-02-11 10:44:47
【问题描述】:
我正在扩展一个名为Is SQL Server 'MONEY' data type a decimal floating point or binary floating point?的类似问题
接受的答案告诉我们“金钱”数据类型是定点而不是浮点类型,但没有说明它是二进制定点还是十进制定点。
我假设它是十进制定点,但我无法在任何地方找到确认。
documentation 告诉我们范围和大小,但不告诉我们底层实现。
【问题讨论】:
-
我从未听说过
binary-fixed-point。请参考这是什么意思。二进制是以一为底的,而不是以十为底的。不管是同一个号码。 -
在Should you choose the MONEY or DECIMAL(x,y) datatypes in SQL Server? (TL;DR: do not use MONEY), user Anon tells us 表示“在幕后,money/smallmoney 只是一个 bigint/int 文本表示中的小数点 money是视觉上的绒毛……”
-
最小值和最大值与
BIGINT的值完全对应并插入了小数点并不是巧合,因为这基本上就是它的样子(SMALLMONEY是一个INT插入小数点)。由于比例因子是 10 的幂,它有资格作为十进制定点类型。正如链接的答案所说,MONEY应该谨慎使用,因为它的精度是固定的(DECIMAL计算会根据需要改变它们的精度)。 -
@samHumeniuk 。 . .有趣的。我假设它存储的值与
decimals 相同。但是考虑到值的限制,它似乎是一种不同的内部格式。您可能需要深入了解 SQL Server 内部结构才能回答这个问题。
标签: sql-server sqldatatypes fixed-point