更新时间:2026-07-28 GMT+08:00
分享

数值类型

表1列出了ecpg提供的数值类型(numeric/decimal)数据的常用接口:

表1 数值类型常用接口

API接口

接口描述

说明

numeric* PGTYPESnumeric_new(void)

请求一个指向新分配的numeric变量的指针。

该函数在堆上创建numeric*类型变量,返回值为numeric*类型。

decimal* PGTYPESdecimal_new(void)

请求一个指向新分配的decimal变量的指针。

该函数在堆上创建decimal*类型变量,返回值为decimal*类型。

void PGTYPESnumeric_free(numeric *var)

释放先前分配的numeric*类型变量的内存。

该函数释放通过PGTYPESnumeric_new函数创建的numeric*类型变量。

void PGTYPESdecimal_free(decimal *dst)

释放先前分配的decimal*类型变量的内存。

该函数释放通过PGTYPESdecimal_new函数创建的decimal*类型变量。

numeric* PGTYPESnumeric_from_asc(char *str, char **endptr)

用于将字符串形式的数值转换为numeric类型。

有效格式如:-2、.794、+3.44、592.49E07、-32.84e-4。如果解析转换成功,则返回一个有效指针,否则返回空指针。ecpg支持解析完整的字符串,目前不支持把第一个非法字符的地址存储在*endptr中,可以把endptr设置为NULL。

char* PGTYPESnumeric_to_asc(numeric *num, int dscale)

将一个numeric类型变量转换为字符串类型。

numeric值将被使用dscale小数位打印,必要时会取整。

int PGTYPESnumeric_add(numeric *var1, numeric *var2, numeric *result)

将两个numeric变量相加放到第三个numeric变量中。

该函数把变量var1和var2相加放到结果变量result中。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_sub(numeric *var1, numeric *var2, numeric *result)

将两个numeric变量相减并且把结果返回到第三个numeric变量。

该函数把变量var2从变量var1中减除。该操作的结果被存储在变量result中。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_mul(numeric *var1, numeric *var2, numeric *result)

将两个numeric变量相乘并且把结果返回到第三个numeric变量。

该函数把变量var1和var2相乘。该操作的结果被存储在变量result中。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_div(numeric *var1, numeric *var2, numeric *result)

将两个numeric变量相除并且把结果返回到第三个numeric变量。

该函数用变量var2除变量var1。该操作的结果被存储在变量result中。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_cmp(numeric *var1, numeric *var2)

比较两个numeric变量。

该函数比较两个numeric变量。报错时会返回INT_MAX。成功时,该函数返回三种可能结果:
  • 如果var1大于var2,则返回1。
  • 如果var1小于var2,则返回-1。
  • 如果var1和var2相等,则返回0。

int PGTYPESnumeric_from_int(signed int int_val, numeric *var)

将一个整型变量转换成numeric类型。

该函数接受一个有符号整型变量并且把它存储在numeric变量var中。成功时返回0,报错时返回-1。

int PGTYPESnumeric_from_long(signed long int long_val, numeric *var)

将一个长整型变量转换成numeric类型。

该函数接受一个有符号长整型变量并且把它存储在numeric变量var中。成功时返回0,报错时返回-1。

int PGTYPESnumeric_copy(numeric *src, numeric *dst)

将一个numeric变量复制到另一个numeric变量中。

该函数把src指向的变量的值复制到dst指向的变量。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_from_double(double d, numeric *dst)

将一个双精度类型的变量转换成numeric类型。

该函数接受一个双精度类型的变量并且把结果存储在dst指向的变量中。成功时该函数返回0,报错时返回-1。

int PGTYPESnumeric_to_double(numeric *nv, double *dp)

将一个numeric类型的变量转换成双精度类型。

该函数将nv指向的变量中的numeric值转换成dp指向的双精度变量。成功时该函数返回0,报错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。

int PGTYPESnumeric_to_int(numeric *nv, int *ip)

将一个numeric类型的变量转换成整型类型。

该函数将nv指向的变量的numeric值转换成ip指向的整型变量。成功时该函数返回0,报错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。

int PGTYPESnumeric_to_long(numeric *nv, long *ip)

将一个numeric类型的变量转换成长整型类型。

该函数将nv指向的变量的numeric值转换成ip指向的长整型变量。成功时该函数返回0,报错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。

int PGTYPESnumeric_to_decimal(numeric *src, decimal *dst)

将一个numeric类型的变量转换成decimal类型。

该函数将src指向的变量的numeric值转换成dst指向的decimal变量。成功时该函数返回0,报错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。

int PGTYPESnumeric_from_decimal(decimal *src, numeric *dst)

将一个decimal类型的变量转换成numeric类型。

该函数将src指向的变量的decimal值转换成dst指向的numeric变量。成功时该函数返回0,报错时返回-1(包括溢出)。

示例

请参见典型应用开发示例章节。

相关文档