sqlchild Asked: 2011-04-12 06:44:58 +0800 CST2011-04-12 06:44:58 +0800 CST 2011-04-12 06:44:58 +0800 CST sql server 中的数据类型,相似数据类型之间的区别,数字,金钱,小数,浮点数 772 可以为这个值赋予什么数据类型 --> 45.58 能否给出这些: 数字 钱 十进制 漂浮 那有什么区别呢?哪一个最好用? sql-server sql-server-express 2 个回答 Voted Best Answer JNK 2011-04-12T07:13:54+08:002011-04-12T07:13:54+08:00 与 SQL Server 中的所有其他内容一样,它取决于. Numeric是一样的Decimal。这些可让您指定精度,如果您将有 2 个以上的小数位或需要比您所指示的精度更高的精度,这些是很好的。 Money用于,你猜对了,钱。如果您的字段是货币,这是合适的。 Float有点特殊,不适合精确数字。如果您需要表示浮点数,这是一种方法。如果您需要始终准确地存储您在现场放置的内容,这float是一个糟糕的选择。 那么,你想用这个字段做什么呢?您的数据实际上代表什么? 这应该是您使用哪种数据类型的决定因素。 Nicholas Carey 2011-04-12T09:15:40+08:002011-04-12T09:15:40+08:00 numeric并且decimal是一回事。它们存储固定精度的十进制值。您指定精度和比例(例如decimal(8,3),指定字段宽度为 8 位小数,最后 3 位在小数点右侧)。 Money类似于 numeric/decimal,除了它的比例是固定的:它存储 4 个小数点的精度。我相信,底层数据存储是一个有符号的 64 位二进制补码整数。小数点是隐含的。Smallmoney是一个有符号的 32 位二进制补码整数,隐含 4 位小数精度。尽管有这个名字,money/smallmoney 不仅仅用于货币价值:如果您不需要巨大的范围或高精度,money/smallmoney 是您的最佳选择,恕我直言。存储比等效的十进制/数字值更紧凑。 float是 IEEE 浮点数。它具有所有浮点值所具有的所有优点和缺点。见http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems 我不相信任何特定格式比另一种更好:它取决于您的需求和所有这些固有的权衡(例如,十进制/数字,咀嚼相对大量的空间)。也没有什么可以阻止您自己滚动:例如,您可以将您的45.58值存储为整数 (4558)。当然,任何使用该字段的人都需要知道它的隐含比例为 2。
与 SQL Server 中的所有其他内容一样,它取决于.
Numeric
是一样的Decimal
。这些可让您指定精度,如果您将有 2 个以上的小数位或需要比您所指示的精度更高的精度,这些是很好的。Money
用于,你猜对了,钱。如果您的字段是货币,这是合适的。Float
有点特殊,不适合精确数字。如果您需要表示浮点数,这是一种方法。如果您需要始终准确地存储您在现场放置的内容,这float
是一个糟糕的选择。那么,你想用这个字段做什么呢?您的数据实际上代表什么? 这应该是您使用哪种数据类型的决定因素。
numeric
并且decimal
是一回事。它们存储固定精度的十进制值。您指定精度和比例(例如decimal(8,3)
,指定字段宽度为 8 位小数,最后 3 位在小数点右侧)。Money
类似于 numeric/decimal,除了它的比例是固定的:它存储 4 个小数点的精度。我相信,底层数据存储是一个有符号的 64 位二进制补码整数。小数点是隐含的。Smallmoney
是一个有符号的 32 位二进制补码整数,隐含 4 位小数精度。尽管有这个名字,money/smallmoney 不仅仅用于货币价值:如果您不需要巨大的范围或高精度,money/smallmoney 是您的最佳选择,恕我直言。存储比等效的十进制/数字值更紧凑。float
是 IEEE 浮点数。它具有所有浮点值所具有的所有优点和缺点。见http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems我不相信任何特定格式比另一种更好:它取决于您的需求和所有这些固有的权衡(例如,十进制/数字,咀嚼相对大量的空间)。也没有什么可以阻止您自己滚动:例如,您可以将您的
45.58
值存储为整数 (4558)。当然,任何使用该字段的人都需要知道它的隐含比例为 2。