我试图调试一个perl应用程序的问题,该程序调用一些c程序来进行文本编辑。
BATCHYJVA CSHMAX用于测试一个数量字段的最大值。如果金额超过99999999.99,则当前指示错误应接受高达99999999.99的值好吧,不管怎样,这就是文档中所说的。
它在include文件中:

#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()获取已在另一个c程序中计算的值tot_amt1它是“静态双倍”。
是的,我有很多工作要做。这是读取以空格分隔的记录并写出固定格式记录的过程的一部分。
谢谢。
凯西

最佳答案

它表示指数为0所以5e0就是5 x 10^0 == 5 x 1 == 5我认为宏是这样定义的,只是为了给数字一个浮点类型(作为使用5.05f的替代方法)

08-16 23:50