decimal的数据结构:
#define DECSIZE 16
struct decimal{
short dec_exp;
short dec_pos;
short dec_ndgts;
char dec_dgts[DECSIZE];
};
typedef struct decimal dec_t;
decimal.h头文件中定义了decimal结构体和dec_t类型。
使用如下include语句和以引用decimal.h
EXEC SQL include decimal;
decimal结构中,各个成员的含义
成员 | 描述 |
dec_exp | 小数点在dec_dgts[]数组中的位置。小数点的起始位置是dec_dgts[]数组中有效最高位的左侧。dec_exp代表小数点从有效最高位向右侧移动的数据元素的个数。 |
dec_pos | decimal的符号, 1:decimal的数值大于等于0. 0:decimal的数值小于0. -1:decimal的值为空。 |
dec_ndgts | dec_dgts数组的有效元素个数。 |
dec_dgts[] | char数组,包含decimal的有效值。每一个元素都是一个100进制的数值,也就是说,元素值小于100。 |
下面的表格显示decimal结构体用法。
值 | dec_exp | dec_pos | dec_ndgts | dec_dgts[] |
-12345.6789 | 3 在dec_dgts[]数据中,小数点从dec_dgts[0]的左侧向右移动3个位置,移动到dec_dgts[3]的左侧。 | 0 表明是负数 | 5 表明dec_dgts数组中有0-4共5个元素。 | dec_dgts[0] = 01 dec_dgts[1] = 23 dec_dgts[2] = 45 dec_dgts[3] = 67 dec_dgts[4] = 89 |
1234.567 | 2 | 1 | 4 | dec_dgts[0] = 12 dec_dgts[1] = 34 dec_dgts[2] = 56 dec_dgts[4] = 70 |
-123.456 | 2 | 0 | 4 | dec_dgts[0] = 01 dec_dgts[1] = 23 dec_dgts[2] = 45 dec_dgts[3] = 60 |
480 | 2 | 1 | 2 | dec_dgts[0] = 04 dec_dgts[1] = 80 |
.152 | 0 | 1 | 2 | dec_dgts[0] = 15 dec_dgts[1] = 20 |
-6 | 1 | 0 | 1 | dec_dgts[0] = 06 |
填充dec_dgts数组时, 从整数部分开始,确保小数点位于dec_dgts元素之间。