dectoint() 函数将 decimal 类型数值转换为 C int 类型数值。
语法
mint dectoint(dec_val, int_val)
dec_t *dec_val;
mint *int_val;
dec_val
指向 dectoint() 将其值转换为 mint 类型值的 decimal 结构的指针。
int_val
指向 dectoint() 放置转换的结果处的 mint 值的指针。
用法
dectoint() 库函数将 decimal 值转换为 C 整数。该 C 整数的大小依赖于您正在使用
的计算机的硬件和操作系统。因此,dectoint() 函数将整数值等同于 SQL SMALLINT 数
据类型。SMALLINT 有效范围在 32767 与 -32767 之间。要将较大的 decimal 转换为较
大的整数,请使用 dectoint() 库函数。
返回代码
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 664 -
0
转换成功。
<0
转换失败。
-1200
decimal 类型数值的大小大于 32767。
示例
demo 目录中的文件 dectoint.ec 包含下列样例程序。
/*
* dectoint.ec *
The following program converts two DECIMAL numbers to integers and displays the result
of each conversion.
*/
#include
EXEC SQL include decimal;
char string1 [] = "32767";
char string2 [] = "32768";
main()
{
mint x;
mint n = 0;
dec_t num;
printf("DECTOINT Sample ESQL Program running.\n\n)";
printf("String 1 = %s\n", string1);
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 665 -
if (x = deccvasc(string1,strlen(string1), #))
{
printf(" Error %d in converting string1 to decimal\n", x);
exit(1);
}
if (x = dectoint(#, &n))
printf(" Error %d in converting decimal to int\n", x);
else
printf(" Result = %d\n", n);
printf("\nString 2 = %s\n", string2);
if (x = deccvasc(string2, strlen(string2), #))
{
printf(" Error %d in converting string2 to decimal\n", x);
exit(1);
}
if (x = dectoint(#, &n))
printf(" Error %d in converting decimal to int\n", x);
else
printf(" Result = %d\n", n);
printf("\nDECTOINT Sample Program over.\n\n");
exit(0);
}
输出
DECTOINT Sample ESQL Program running.
String 1 = 32767
Result = 32767
String 2 = 32768
Error -1200 in converting decimal to int
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 666 -
DECTOINT Sample Program over.