当前位置:  开发笔记 > 编程语言 > 正文

为什么在c中定义的常量的末尾使用'e0'?

如何解决《为什么在c中定义的常量的末尾使用'e0'?》经验,为你挑选了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程序中计算.这是"静态双重".

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

谢谢.凯茜



1> Ates Goral..:

这意味着0指数因此5e05 x 10^0 == 5 x 1 == 5.我认为宏被定义为只是为了给数字一个浮点类型(作为使用just 5.05f.的替代方法)


轻微澄清 - 最后没有'f'或'L'(情况无关紧要),常数的类型是双精度.
另一个小的澄清,你实际上并不需要0,所以5.0,5和5e0都是浮点,双常数.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有