我认为浮动(n)中n的最小值必须为1。
我没见过" float(0)"之前的数据类型,所以我想知道它是否有效。
答案 0 :(得分:5)
如果没有指定实现,这个问题可能不是非常有意义。
在SQL Server中,例如float's minimum precision is 1。
其中n是位数 用于存储的尾数 浮点数用科学计数法表示 因此,决定了精度 和存储大小。如果指定了n, 必须是1到53之间的值。 n的默认值为53。
另一方面,在MySQL中,float(0)
是有效的语法,但听起来并不十分有意义。 From the specification:
MySQL也支持这个可选项 精度规格,但 精度值仅用于 确定存储大小。 精确度 从0到23导致四个字节 单精度FLOAT柱。一个 从24到53的精度导致 八字节双精度DOUBLE 列。
Oracle has a FLOAT datatype,但它似乎只是NUMBER的别名,其最小精度为1:
NUMBER数据类型的子类型 有精度p。 FLOAT值是 内部表示为NUMBER。 精度p的范围为1到126个二进制数字。 FLOAT值 需要1到22个字节。
因此,您可以看到答案是高度针对特定于实现的。我不确定ANSI SQL标准是否指定了FLOAT精度。他们可能没有。
答案 1 :(得分:1)
它无效,因为您需要声明数据类型的大小。显然不能为零。
答案 2 :(得分:1)
Oracle和MS SQL都声明float
精度的最小值为1。
这是有道理的:它是您希望浮点数支持的小数位数。零小数位将意味着没有价值。
答案 3 :(得分:0)
根据这个:
http://msdn.microsoft.com/en-us/library/ms173773.aspx
它无效,至少在SQL Server上是这样。 0表示零位,并且很难将数据压缩到没有存储空间的东西。