1

我正在尝试调试调用某些 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 程序中计算。它是“静态双”。

是的,我有很多工作要做。这是读取以空格分隔的记录并写出固定格式记录的过程的一部分。

谢谢。凯茜

4

8 回答 8

10

这意味着指数为 0。5e0也是5 x 10^0 == 5 x 1 == 5。我认为宏的定义只是为了给数字一个浮点类型(作为使用的替代方法5.0or 5f。)

于 2009-04-20T19:12:25.190 回答
2

这是科学记数法

于 2009-04-20T19:12:33.193 回答
2

99999999999e0 是一个浮点常数。末尾的“e0”表示“*10^0”。那是

1e2 = 100.0
1e-1 = .1
1e0 = 1.0

等等

于 2009-04-20T19:12:57.667 回答
1

值 9999999999e0 是 C 表示科学记数法的方式

9999999999 * 10^0

因此,如果您想允许最多 1,000,000,000.00 的数字,您可以使用

#define BATCH_JV_CSH_MAX 1e9

哪个更容易阅读,IMO。但如果你更喜欢完整版,你可以使用

#define BATCH_JV_CSH_MAX 1000000000e0
于 2009-04-20T19:15:49.503 回答
0

是科学记数法。它的意思是“乘以十的零次方”,或乘以 1。

于 2009-04-20T19:12:33.957 回答
0

http://en.wikipedia.org/wiki/Scientific_notation#E_notation

于 2009-04-20T19:13:20.663 回答
0

999999999e0 是浮点表示。0 是 10 的指数。

9e0 == 9

于 2009-04-20T19:13:36.107 回答
0

当然看起来像一个指数:

NUMex - NUM x 10 ^x

例如,12.345e2 = 1234.5

于 2009-04-20T19:16:45.037 回答