代码之家  ›  专栏  ›  技术社区  ›  Cathy Sullivan

为什么在C中定义的常量末尾使用“e0”?

  •  1
  • Cathy Sullivan  · 技术社区  · 16 年前

    我试图调试一个Perl应用程序的问题,它调用一些C程序来进行文本编辑。

    批次“jv”csh“max”用于测试金额字段的最大值。如果金额超过99999999.99,则当前指示错误。应接受高达999999999.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。它是“静态双精度”。

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

    谢谢。 凯西

    8 回复  |  直到 16 年前
        1
  •  10
  •   Ates Goral    16 年前

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

        2
  •  2
  •   dfa    16 年前
        3
  •  2
  •   jpalecek    16 年前

    9999999999 e0是浮点常量。末尾的“e0”表示“*10^0”。那就是

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

    等。

        4
  •  1
  •   Rick Copeland    16 年前

    值9999999999 e0是C表示科学符号的方式

    9999999999 * 10^0
    

    因此,如果您希望允许数字高达100000000.00,您可以使用

    #define BATCH_JV_CSH_MAX 1e9
    

    在我看来,这本书读起来容易得多,但是如果你喜欢完整的版本,你可以使用

    #define BATCH_JV_CSH_MAX 1000000000e0
    
        5
  •  0
  •   leander    16 年前

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

        7
  •  0
  •   Cătălin Pitiș    16 年前

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

    9E0=9

        8
  •  0
  •   cookre    16 年前

    当然看起来像指数:

    numex-数字x 10^x

    例如,12.345e2=1234.5

    推荐文章