Decimal或Float的决定

时间:2013-02-21 09:28:44

标签: sql-server floating-point decimal

当您在表中使用decimal或float作为数据类型时,您应该做出什么决定?

3 个答案:

答案 0 :(得分:3)

float较小且性能较高,因此如果性能问题,您可能需要使用float

decimal最适合准确地重复十进制数。 float以二进制形式存储数字,因此像10.2这样的数量不能完全存储为float,但它可以完全存储为decimal。如果确切的十进制表示比性能更重要,那么您应该选择decimal

答案 1 :(得分:0)

检查一下。这可能就是你要找的东西。它基本上可以给你带来不同。

Difference between float and decimal data type

答案 2 :(得分:0)

对于整数类型,像57这样的值精确地表示数字57。毫无疑问,它是否真的代表了更大或更小的东西。零值表示加性标识(向任何值加零产生相同的值),值1表示乘法标识(将任意值乘以1得到相同的值),任何其他正值表示必须是的次数加到零到达它(例如2是1 + 1,3是1 + 1 + 1等),任何负值代表相应正值的加法逆。

对于二进制浮点类型,值不代表精确数字。相反,除了一些标记值之外,每个浮点值都有一系列数字,应该将它们视为最佳表示;该范围内的一个数字被认为是“名义价值”。 IEEE标准要求添加两个浮点值应该能够最好地表示通过添加其标称值而产生的数量,但这并不意味着float的标称值恰好恰好是2000000.125实际上代表那个确切的数量。它可能同样代表计算结果(例如20000000.0f / 10.0f),其结果可由float值更好地代表任何其他值。

尽管Decimal类型提供的精度高于floatdouble,但其主要用途是表示精确的小数部分(例如1.37)。该类型的语义实际上更接近于像double这样的不精确类型的语义,而不是类似于int的精确类型,因为例如添加一万亿到一个数字然后减去万亿可能会导致一个数字与起始值不同。如果类型的目的是识别精确的小数部分,或者如果需要类型可以提供的额外精度,Decimal可能是一个很好的拟合,尽管它的怪癖。否则,如果显示为1.37的值实际上代表一个数字,其中1.37是最方便的表示,但实际上可能更大或更小,类型double将更紧凑,更快速地使用