2011-04-26 60 views

回答

5

这个问题可能不是没有指定的实现非常有意义的。

在SQL Server中,例如,float's minimum precision is 1

其中n是被 用于将 浮点数的尾数储存在科学记数法 ,因此比特的数目,决定了精度 和存储大小。如果指定n, 它必须是1和53之间的值。 n的缺省值是53.

在MySQL中,另一方面,float(0)是有效的语法,但它听起来不太有意义。 From the specification

MySQL也支持这个可选 精度规格,但 精度值仅用于 确定存储大小。 从0到23的结果在一个四字节 单精度浮点柱精密 。从24至53的结果在 八字节的双精度甲 高精度双 柱。

甲骨文has a FLOAT datatype,但它似乎只是用于NUMBER的别名,其最小精度为1:

在具有精度p NUMBER数据类型 的A亚型。 FLOAT值为 ,内部表示为NUMBER。 精度p可以为1至126的二进制数字。 FLOAT值 需要1到22个字节。

所以你可以看到答案是高度实现特定的。我不确定ANSI SQL标准是否指定FLOAT精度。他们可能不会。

+0

真棒解释。我检查了服务器端将使用什么SQL实现,它是MySQL。客户端将实现SQLite,我想在这种情况下,数据类型将转换为REAL并自动获取8个字节的存储大小。 – 2011-04-26 18:54:34

+0

如果该值需要1到22个字节,则范围必须为1到* 176 *二进制数字。 – 2011-04-26 19:30:21

+0

这是一个很好的观察结果......不过,您必须将其与我从中复制报价的网站维护人员合起来。 :) – 2011-04-26 19:50:43

1

它是无效的,因为你需要声明数据类型的大小。显然不能为零。

1

Oracle和MS SQL状态,对于float精度最小值是1

这是有道理的:这是你想要你的浮点数支持小数位的数量。小数点后的零位意味着没有任何值。

相关问题