【发布时间】:2009-04-20 19:10:06
【问题描述】:
我正在尝试调试一个调用某些 c 程序进行文本编辑的 perl 应用程序的问题。
BATCH_JV_CSH_MAX 用于测试金额字段的最大值。如果金额超过 99,999,999.99,则当前指示错误。应该接受高达 999,999,999.99 的值。好吧,无论如何,这就是文档中所述的内容。
它在包含文件中:
#define PROJ_SZ 6
#define REF_SZ 9
#define DESC_SZ 22
#define TRAN_AMT_MAX 9999999999e0
#define BATCH_AMT_MAX 9999999999e0
#define BATCH_JV_CSH_MAX 99999999999e0
#define BATCH_CNT_MAX 99999
我还不知道这个程序是如何工作的。它可能会去除除数字以外的任何值并连接字符。在继续之前,我想知道金额末尾的“e0”是什么意思。在决定向这个小组提问之前,我在 Safari 的几本 c 编程书籍中进行了文本搜索。
这个值在错误信息中被打印出来,所以 '999999999' 比 1e9 更有意义
值是这样使用的:
/* Batch total amount 1 - debit dollars */
/* Check for overflow */
if (fabs(get_tot_amt1()) > BATCH_JV_CSH_MAX)
{
fprintf(stderr, "\n*** Error: Transaction debit amount overflow\n");
fprintf(stderr, "\n*** Maximum expected: %.0f\n",
BATCH_JV_CSH_MAX);
return (FALSE);
}
sprintf(in_batch_sum.batch_debit_amt, "%011.0f", get_tot_amt1());
get_tot_amt1() 获取一个值 tot_amt1,该值已在另一个 c 程序中计算。它是“静态双”。
是的,我有很多工作要做。这是读取以空格分隔的记录并写出固定格式记录的过程的一部分。
谢谢。 凯茜
【问题讨论】:
-
您能否说明使用 BATCH_JV_CSH_MAX 的上下文?同一个宏可以做不同的事情,这取决于它的使用方式。
标签: c maintenance scientific-notation