数值
数字可存储为以下四种数值数据类型中的一种类型:
短整型
长整型
浮点型(单精度浮点数)
双精度型(双精度浮点数)
选择数据类型时,首先应考虑需要存储整数还是小数。如果仅需存储整数(如 12 或 12,345,678),可指定短整型或长整型。如果需要存储含有小数数位的小数(如 0.23 或 1234.5678),可指定浮点型或双精度型。
其次,如果需要在短整型与长整型之间或者浮点型与双精度型之间做出选择,请选择存储空间占用最小的数据类型。这不仅会使所需存储量降至最低,而且还会提高性能。如果仅需要存储介于 -32,768 与 32,767 之间的整数,可指定短整型数据类型,因为它仅占用 2 个字节,而长整型数据类型却会占用 4 个字节。如果仅需要存储介于 -3.4E38 与 1.2E38 之间的小数,可指定浮点型数据类型,因为它占用 4 个字节,而双精度数据类型却会占用 8 个字节。下表列出了各数据类型以及各自的数值范围和存储要求。此处列出的数值范围适用于文件地理数据库和个人地理数据库。但在 ArcSDE 地理数据库和数据库中,数值范围略有不同。
数据类型
可存储的数值范围
大小(字节)
应用程序
短整型
-32,768 至 32,767
2
特定数值范围内不含小数值的数值;编码值
长整型
-2,147,483,648 至 2,147,483,647
4
特定数值范围内不含小数值的数值
浮点型(单精度浮点数)
约为 -3.4E38 到 1.2E38
4
特定数值范围内包含小数值的数值
双精度型(双精度浮点数)
约为 -2.2E308 到 1.8E308
8
特定数值范围内包含小数值的数值ArcGIS 数据类型表
如果要为文件地理数据库或个人地理数据库中的表指定数值字段,仅需指定数据类型。如果要为数据库或 ArcSDE 地理数据库指定数值字段,则还需要指定精度(字段的最大长度)和范围(小数位的最大数量)。
指定精度和小数位数可限制字段可接受的值范围和数字格式,便于您更好地加以控制。例如,如果您指定精度为 4、小数位数为 2 的浮点型,则字段将接受 12.34。如果要在字段中输入 12.345,则会显示错误消息,因为这超出了所允许的最大位数和小数位数。但是,如果您指定精度为 5、小数位数为 3 的浮点型,则字段允许您输入 12.345。
下表中列出了数据类型及其可能的精度值和范围值。使用此表有助于为数据库和 ArcSDE 地理数据库选择数据类型、精度和范围。
数据类型
精度(字段长度)
范围(小数位数)
短整型*
1–5(Oracle、SQL Server、PostgreSQL、Netezza);5(DB2、Informix)
0
长整型
6–10(Oracle 和 PostgreSQL);6–9(DB2、Informix、Netezza 和 SQL Server)
0
浮点型
1–6
1–6
双精度
7+
0+
*默认情况下,在 ArcGIS for Desktop 中,创建的短整型的精度为 5。但是,短整型列只能存储处于范围 -32,768 到 32,767 之间的值。因此,即使将精度设置为 5,还是无法在短整型字段中存储大于 32,767 或小于 -32,768 的值。无需在任何数据库(Oracle 除外)中为在 ArcGIS for Desktop 中创建的短整型列指定精度。并且也无需在 SQL Server 或 PostgreSQL 数据库中为在 ArcGIS for Desktop 中创建的长整型列指定精度。
下表提供了一些数字范围以及如何将它们存储在 ArcSDE 地理数据库中或数据库中的示例:
范围
数据类型
精度(字段长度)
范围(小数位数)
0 至 99
短整型
2
0
-99 到 99*
短整型
3
0
0 到 32,767*
短整型
5
0
32,768 至 99,999
长整型
5
0
0.001 至 0.999
浮点型
4
3
1,000.00 至 9,999.99
浮点型
6
2
-123,456.78 到 0*
双精度
9
2
0 至 1,234.56789
双精度
9
5数字范围、数据类型、精度和范围的示例
*负数需要额外的精度存储负号。
计算机仅能存储有限的位数,具体情况取决于分配的存储空间。数据库以及文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中双精度型数据的字段可精确地存储最多仅包含 15 位数的数字,因为这是可存入 8 字节空间的最长数字。位于多于此值的数字将被四舍五入,然后以类似于科学记数法的格式进行存储,使它们仅为近似数字。例如,如果输入包含 20 位的数字 12,345,678,901,234,567,890,则该数字将四舍五入,然后存储为包含 15 位的数字 1.23456789012346E+19。结尾的编码值 E+19 可限定小数点的放置位置。
文件地理数据库和个人地理数据库中的浮点型可精确地存储最多仅包含 6 位的数字。例如,无法将数字 123,456.7 精确地存储到浮点型字段中,因为此数字包含的位数多于六个。此数字仍可输入到文件地理数据库或个人地理数据库的浮点型字段中,但将四舍五入为包含允许的 6 位数的数字 123,457。如果需要精确地存储此数字,可将其存储在双精度字段中。ArcSDE 地理数据库和数据库中的浮点型字段严格禁止输入超过该字段精度位数的数字,因此并不会进行四舍五入。